asip学习笔记(2)——nml文件,tinycore2

nML描述的第一部分包含以抽象方式描述目标处理器的硬件实体的声明。→skeleton
第二部分包含目标处理器的实际指令集及其执行行为,即其操作和数据路径的连接性。包括指令集的规范和处理器的执行行为。→rules
处理器的结构骨架:
在nML描述的第一部分,处理器的所有存储元素均在全局范围内声明。它们形成了一个结构骨架,该骨架定义了目标处理器定义的原始操作的连接点。实际上,存储元素中的值决定了处理器的状态,指令执行原始操作以更改此状态。存储元素声明定义了一个唯一的存储元素,该元素以其整个nML描述的唯一名称而确定。每个存储元素都使用其包含的值的数据类型和地址类型键入。两种类型都必须先前在处理器标头文件中声明。此外,必须指定存储元素的有效地址。在两种存储元素之间进行区分:static数据存储元素和transitory数据存储元素。
存储单元需要定义属性,下面是可用的两种方式:

指令集和执行行为描述:
最好使用自上而下的方法编写nML描述。在定义了数据结构的结构骨架后,通过为语法写下执行规则来分析指令集并捕获其结构。这些规则(语法中的每个句子)每个可能派生都代表一个合法指令。有两种规则:
1.OR规则:列出了指令部分的所有替代方案。这些替代方案是相互排斥的,这意味着一次只能执行一种替代方案。
2.ADN规则:描述说明部分的组成。在这种情况下,组成的说明部分是正交的,这意味着每个指令零件的任何法律派生的串联构成了和规则本身的法律派生。
语法属性的规范和组合是用于指定nML中目标处理器的执行行为和指令集的基本机制。
在nML描述的第一部分中指定了语法的起始符号:start tctcore;
三个语法属性:
•action属性:描述了哪些操作是由指令或指令部分执行的。每个和规则必须具有一个动作属性。
•syntax属性:为相应的指令(部分)指定汇编器语法(mnemonics)。仅当一个人打算从nML描述中得出汇编器或拆卸工具时,才必须存在。如果需要,AND规则可能具有多个语法属性。
•image属性:定义了相应说明(部分)的二进制编码。在某些情况下,可能需要多个图像属性。也可以自动派生指令编码,在这种情况下,必须没有指定图像属性。
一个OR规则通常不会定义任何属性,而是通过其左侧和右侧之间的属性。可以定义一个或规则的图像属性 - 通常是根据其右侧规则的图像属性来定义的,但不能定义操作或语法属性。
在nML中,可以使用hw_init关键字指定存储元素的初始值,指的是硬件初始化值。可以针对static和transitory指定初始值:临时性的初始值表明,该值在每个周期的开头初始初始化。在某个周期中,初始值最多可以一次覆盖。这种暂时性始终具有有意义的价值,当它没有在某个周期中写入时。这意味着有效的指令可以从这样的暂时开始并结束。
函数property:
1.commutative:表示综合时前两个输入顺序可以更换
2.nop:向编译器标识哪个原语函数以及哪个指令可以用来实现NOP
3.relative:仅与属性jump,call或doloop结合使用。指示操作数重新启动目标地址作为程序内存中的相对地址(与当前指令的地址有关)。
4.ret:从子例程操作返回。操作数表示程序内存中的返回地址。
asip设计全流程:
1.新建处理器工程,添加nml,h头文件,compiler.h头文件,pdg文件,make建立
2.新建指令集模拟器工程,pcu文件,它通过用户定义的PCU行为模型来补充NML处理器模型。在PDG中,某些控制器函数被建模为TinyCore类的成员函数。TinyCore类具有两个成员函数:user_issue()和user_next_pc()。user_issue()函数描述了如何处理上一个周期中获取的指令。user_next_pc()函数描述了ISS必须如何更新程序计数器。有关PCU建模机制的更详细说明,请参见PDG手册。iss配置
3.新建编译项目

posted @ 2025-03-15 19:17  周一三  阅读(14)  评论(0)    收藏  举报