FPGA学习:编写综合友好的代码
原文链接:https://mp.weixin.qq.com/s/W8x2vgOykJe4FDAyCv2m5g随着EDA和集成电路的发展,速度快,规模大,设计复杂成为趋势,以往那种仅仅依靠软件的行为描述,进行的EDA建模带来综合效率低下,甚至不可综合。因此2000年前后,有学者提出“综合友好Synthesis Friendly”概念。要求现代EDA工程师,具有如下的知识背景:
“什么样的HDL语句对应什么样的电路”(What Statements is what Circuits)
“什么样的电路对应什么样的HDL语句” (What Circuits is what Statements)
总之,该课程(或该学术范畴)研究HDL代码和综合的关系。
与其它的EDA理论体系相同,综合理论也是遵循“形式逻辑”的思想发展,从看似简单基础规律推导出复杂结论。综合理论的基础规律则是:代码模型分析CMA(Code-Model Analysis)
代码模型分析CMA:
1.任何一段代码块CB(Code Block)中被引用的信号,对应代码模型CM(Code-Model)的输入信号(输入端口)
2.任何一段代码块CB(Code Block)中被驱动的信号,对应代码模型CM(Code-Model)的输出信号(输出端口)
3.根据代码块的层次结构,决定内层信号和外层信号的连接拓扑。
这里,代码块中被引用的信号即在代码块中,位于赋值号右侧的信号,或者在条件语句的括弧中出现的信号;代码块中被驱动的信号,即在代码块中位于赋值号左侧的信号。
关于代码模型,按照描述方式是否直接,分为显式模型EM(Explicit Model)和隐式模型IM(Implicit Model)。
显式模型的典型例子是module-endmodule结构,在其中显式声明了输入输出信号(端口),以及信号的属性;隐式模型的典型例子是always begin-end结构,在其中并没有显式声明信号的属性(方向,宽度),但依据代码分析(层次,引用和驱动),仍然具有明确的信号属性定义。
代码模型分析的例子一:
图片
、
FPGA学习:编写综合友好的代码 FPGA学习:编写综合友好的代码
页:
[1]