第六章EDA_Verilog逻辑综合_第1页
第六章EDA_Verilog逻辑综合_第2页
第六章EDA_Verilog逻辑综合_第3页
第六章EDA_Verilog逻辑综合_第4页
第六章EDA_Verilog逻辑综合_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、EDA技术Verilog的逻辑综合的逻辑综合学习目标学习目标1.1. 对逻辑综合的概念进行定义,解释逻辑综合的优点。对逻辑综合的概念进行定义,解释逻辑综合的优点。2.2. 弄清楚哪些弄清楚哪些Verilog HDL结构和操作符能用于逻辑综合结构和操作符能用于逻辑综合,理解逻辑综合工具如何理解逻辑综合工具如何解释解释这些结构。这些结构。3. 解释使用逻辑综合进行设计的典型解释使用逻辑综合进行设计的典型流程流程,描述基于逻辑综,描述基于逻辑综合设计流程的合设计流程的主要组成部分主要组成部分。4. 描述如何验证由逻辑综合生成的描述如何验证由逻辑综合生成的门级网表门级网表。5. 了解编写了解编写高效率

2、高效率RTL描述描述的各种技巧。的各种技巧。6. 描述能为逻辑综合提供描述能为逻辑综合提供最佳门级网表最佳门级网表的的分割技术分割技术。7. 使用逻辑综合的方法进行使用逻辑综合的方法进行组合电路和时序电路组合电路和时序电路的设计。的设计。 EDA技术 什么是逻辑综合什么是逻辑综合逻辑综合是在逻辑综合是在标准单元库标准单元库和和特定的特定的设计约束设计约束的基础上,的基础上,把设计的高层次描述转换成把设计的高层次描述转换成优化的优化的门级网表门级网表的过程。的过程。标准单元库标准单元库:与门、或门、非与门、或门、非门等基本逻辑门;加法门等基本逻辑门;加法器、多路选择器和特殊器、多路选择器和特殊的

3、触发器。的触发器。设计约束设计约束:时序、面积、可时序、面积、可 测试性和功耗等方面。测试性和功耗等方面。将设计者的大脑用作逻辑综合工具将设计者的大脑用作逻辑综合工具EDA技术 什么是逻辑综合计算机辅助逻辑综合工具计算机辅助逻辑综合工具的的出现把高层次描述向逻辑门出现把高层次描述向逻辑门的转化过程自动化了。的转化过程自动化了。该综合工具在内部进行几次该综合工具在内部进行几次反复,生成反复,生成最优化的门级描最优化的门级描述。述。基本的计算机辅助逻辑基本的计算机辅助逻辑综合过程综合过程EDA技术逻辑综合对数字设计行业的影响逻辑综合对数字设计行业的影响手动设计的限制:手动设计的限制: 手动转换更容

4、易带来人为的错误。手动转换更容易带来人为的错误。 把高层次设计转换成逻辑门占去整个设计周期的大部分时间。把高层次设计转换成逻辑门占去整个设计周期的大部分时间。 推测难以验证。推测难以验证。如,设计者设计了一个如,设计者设计了一个20 ns时钟周期工作的门级模块。时钟周期工作的门级模块。如果分析该电路是否能优化到以如果分析该电路是否能优化到以15 ns。为验证这种推测,重新设计。为验证这种推测,重新设计。 不同设计者设计风格缺乏一致性。不同设计者设计风格缺乏一致性。 最终门级设计中发现了一个错误,需要重新设计数以千计的逻辑门。最终门级设计中发现了一个错误,需要重新设计数以千计的逻辑门。 库单元的

5、时序、面积和功耗是与特定制造工艺相关的。如果库单元的时序、面积和功耗是与特定制造工艺相关的。如果改变改变IC制造制造商商,可能意味着重新设计整个电路,还可能要改变设计方法。,可能意味着重新设计整个电路,还可能要改变设计方法。 设计技术是不能重用的。设计是特定于工艺的,难以改变,也难以重用。设计技术是不能重用的。设计是特定于工艺的,难以改变,也难以重用。 EDA技术自动逻辑综合工具解决方式:自动逻辑综合工具解决方式: 采用高层次设计方法,人为错误会更少。采用高层次设计方法,人为错误会更少。 高层次设计无需过多关注设计约束。高层次设计无需过多关注设计约束。逻辑综合工具确保满足所有的约束。逻辑综合工

6、具确保满足所有的约束。 从高层次设计到逻辑门的从高层次设计到逻辑门的转换非常迅速。转换非常迅速。 模块重新设计仅需在寄存器传输级完成,重新综合获得门级网表。模块重新设计仅需在寄存器传输级完成,重新综合获得门级网表。 推测容易验证。推测容易验证。高层描述不变,只把时序约束从高层描述不变,只把时序约束从20 ns变到变到15 ns,重新综合。,重新综合。 逻辑综合工具在整体上逻辑综合工具在整体上优化了设计优化了设计。 如果发现门级设计中有错误,设计者回头如果发现门级设计中有错误,设计者回头修改高层次描述修改高层次描述以消除错误。以消除错误。 在在不考虑不考虑IC制造工艺的情况下编写高层次描述制造工

7、艺的情况下编写高层次描述。改变工艺或者。改变工艺或者IC制造商,设制造商,设计者只需在新工艺的标准单元库的基础上使用逻辑综合,重新综合到逻辑门。计者只需在新工艺的标准单元库的基础上使用逻辑综合,重新综合到逻辑门。 设计重用变成了可能。设计重用变成了可能。逻辑综合对数字设计行业的影响逻辑综合对数字设计行业的影响EDA技术Verilog HDL综合综合RTL级风格级风格寄存器传输级层次用硬件描述语言(寄存器传输级层次用硬件描述语言(HDL)编写设计)编写设计该风格的该风格的HDL描述采用了数据流和行为结构相结合的方式。描述采用了数据流和行为结构相结合的方式。基于基于RTL的综合的综合逻辑综合工具接

8、受寄存器传输级逻辑综合工具接受寄存器传输级HDL描述并把它转化为优化的描述并把它转化为优化的门级网表。门级网表。用于把行为描述转换成用于把行为描述转换成RTL描述的行为综合工具发展缓慢描述的行为综合工具发展缓慢EDA技术可综合的可综合的verilog结构如下所示,使用时有一定的限制。结构如下所示,使用时有一定的限制。 Verilog结构结构 Verilog HDL综合综合EDA技术 强制具有周期到周期的行为,避免组合反馈强制具有周期到周期的行为,避免组合反馈 逻辑综合忽略所有由逻辑综合忽略所有由#指定的延迟指定的延迟 用复位机制取代用复位机制取代initial结构,进行电路信号初始化结构,进行

9、电路信号初始化中国科学技术大学软件学院 School of Software Engineering of USTC Verilog HDL综合综合EDA技术 Verilog中中几乎所有的操作符几乎所有的操作符都可用于逻辑综合。都可用于逻辑综合。 只有只有 = 和和 != 这种与这种与x和和z相关的操作符相关的操作符不能不能用于逻辑用于逻辑综合。综合。 编写表达式时,推荐使用编写表达式时,推荐使用圆括号圆括号来使逻辑更清晰,达到预来使逻辑更清晰,达到预期的目的。期的目的。 如果如果依赖操作符的优先级依赖操作符的优先级,逻辑综合工具有可能产生,逻辑综合工具有可能产生不尽不尽人意人意的逻辑结构。的

10、逻辑结构。 Verilog操作符操作符 Verilog HDL综合综合EDA技术部分部分Verilog结构的解释结构的解释 赋值语句赋值语句赋值结构是在赋值结构是在RTL级用于描述组合逻辑的最基本的结构。级用于描述组合逻辑的最基本的结构。转换成的门级电路实现:转换成的门级电路实现: 如果如果a,b,c和和out是两位的向量是两位的向量1:0,上面的赋值语句会,上面的赋值语句会被转换成两个完全相同的电路,分别对应其中一位。被转换成两个完全相同的电路,分别对应其中一位。 EDA技术 用到算术操作符用到算术操作符例如设计一个一位全加器,假设逻辑综合工具内部有一位全例如设计一个一位全加器,假设逻辑综合

11、工具内部有一位全加器可用,逻辑综合工具直接调用内部全加器模块,如果综加器可用,逻辑综合工具直接调用内部全加器模块,如果综合多位加法器,会进行优化,可能得到一个不同的结果。合多位加法器,会进行优化,可能得到一个不同的结果。使用条件操作符(多路选择器)使用条件操作符(多路选择器)综合后综合后:部分部分Verilog结构的解释结构的解释EDA技术 if-else语句语句 单个单个if-else语句被转换成语句被转换成多路选择器多路选择器,控制信号控制信号是是if子句子句中的信号或者变量。中的信号或者变量。 多个多个if-else-if语句语句不会不会综合成庞大的多路选择器。综合成庞大的多路选择器。

12、case语句语句 case语句用于生成语句用于生成多路选择器多路选择器。 庞大的庞大的case语句语句可以可以用来生成庞大的多路选择器。用来生成庞大的多路选择器。 for循环语句循环语句 for循环可用于产生循环可用于产生级联的链式组合逻辑级联的链式组合逻辑。 always语句语句 always语句可用于生成语句可用于生成时序和组合逻辑时序和组合逻辑。对于时序逻辑来。对于时序逻辑来说,说,always语句必须由时钟信号语句必须由时钟信号clk的变化所控制的变化所控制。部分部分Verilog结构的解释结构的解释EDA技术 例:例: 对于组合逻辑来说,对于组合逻辑来说,always语句必须由语句必

13、须由clk,reset或者或者preset之外的其他信号触发之外的其他信号触发(所有的触发信号都必须写在(所有的触发信号都必须写在敏感列表中)。敏感列表中)。 部分部分Verilog结构的解释结构的解释EDA技术 函数语句函数语句 函数综合成具有一个输出变量的函数综合成具有一个输出变量的组合模块组合模块。输出变量可以。输出变量可以是是标量或者向量。标量或者向量。 中国科学技术大学软件学院 School of Software Engineering of USTC 部分部分Verilog结构的解释结构的解释EDA技术逻辑综合流程逻辑综合流程设计者在高层次使用设计者在高层次使用RTL描述设计。功

14、能正确后输描述设计。功能正确后输入到逻辑综合工具入到逻辑综合工具RTL描述被逻辑综合工具描述被逻辑综合工具转换为一个未经优化的内转换为一个未经优化的内部中间表示。部中间表示。不考虑面积、时序和功耗不考虑面积、时序和功耗等设计约束,仅完成简单等设计约束,仅完成简单的内部资源分配。的内部资源分配。逻辑综合工具根据内部逻辑综合工具根据内部的数据结构在内部表示的数据结构在内部表示设计。设计。删除冗余逻辑,大删除冗余逻辑,大量使用与工艺无关量使用与工艺无关的布尔逻辑优化技的布尔逻辑优化技术,产生该设计术,产生该设计优化后的内部表示。优化后的内部表示。 设计被映射到需设计被映射到需要的目标工艺,要的目标工

15、艺,满足约束要求满足约束要求 生成由目标工艺部件所描述的优生成由目标工艺部件所描述的优化后的门级网表。如果该网表满化后的门级网表。如果该网表满足要求的约束,就制作最终版图。足要求的约束,就制作最终版图。否则,修改否则,修改RTL描述或约束描述或约束EDA技术工艺库工艺库 单元的集合称为工艺库。单元的集合称为工艺库。 单元描述信息:功能、版图面积、时序信息、功耗单元描述信息:功能、版图面积、时序信息、功耗设计约束设计约束 设计约束通常包含下列内容:设计约束通常包含下列内容: 1. 时序时序。电路必须满足一定的时序要求。一个内部的静态电路必须满足一定的时序要求。一个内部的静态时序分析器会检查时序。

16、时序分析器会检查时序。 2. 面积面积。最终的版图面积不能超过一定的限制。最终的版图面积不能超过一定的限制。 3. 功耗功耗。电路功耗不能超过一定的界限。电路功耗不能超过一定的界限。 一般来说,面积和时序约束之间有一个相反的关系。一般来说,面积和时序约束之间有一个相反的关系。 逻辑综合流程逻辑综合流程EDA技术设计说明设计说明设计一个具有如下说明的四位数值比较器设计一个具有如下说明的四位数值比较器IC芯片:芯片: 设计名称是设计名称是magnitude_comparator。 输入输入A和和B是是4位输入,输入端位输入,输入端A和和B不会出现不会出现x或者或者z值。值。 如果如果A大于大于B,

17、那么输出,那么输出A_gt_B为真。为真。 如果如果A小于小于B,那么输出,那么输出A_lt_B为真。为真。 如果如果A等于等于B,那么输出,那么输出A_eq_B为真。为真。 数值比较器电路必须尽可能快,为提高速度,可以牺牲面数值比较器电路必须尽可能快,为提高速度,可以牺牲面积。积。 逻辑综合流程逻辑综合流程EDA技术RTL描述描述工艺库工艺库每个单元的功能、每个单元的功能、时序、面积和功耗时序、面积和功耗都在工艺库中说明都在工艺库中说明逻辑综合流程逻辑综合流程EDA技术设计约束设计约束 只有一个设计约束:只有一个设计约束:优化最终电路,获得最快时序优化最终电路,获得最快时序逻辑综合逻辑综合

18、逻辑综合工具读取数值比较器的逻辑综合工具读取数值比较器的RTL描述。把针对目标工艺描述。把针对目标工艺abc_100的设计约束和工艺库提供给逻辑综合工具。逻辑综合工具进行必要的的设计约束和工艺库提供给逻辑综合工具。逻辑综合工具进行必要的优化,并产生针对优化,并产生针对abc_100工艺优化后的门级描述。工艺优化后的门级描述。最终优化后的门级描述最终优化后的门级描述 逻辑综合工具产生最终的门级描述。逻辑综合工具产生最终的门级描述。门级电路的逻辑图 逻辑综合工具为该电路生成的逻辑综合工具为该电路生成的门级Verilog描述。IC制造制造 逻辑综合流程逻辑综合流程EDA技术门级网表的验证门级网表的验

19、证 功能验证:功能验证: 最初编写的最初编写的RTL模块和其综合后的门级模块用模块和其综合后的门级模块用同一个测试同一个测试激励模块激励模块进行测试。比较它们的输出结果,找出其中的不进行测试。比较它们的输出结果,找出其中的不一致。一致。 对于门级描述,必须有一个由工艺厂商提供的对于门级描述,必须有一个由工艺厂商提供的仿仿真库真库支持。支持。 时序验证:时序验证: 通常使用通常使用时序仿真或者静态时序验证工具时序仿真或者静态时序验证工具来检查门级网表来检查门级网表的时序。如果违反任何时序约束,设计者必须重新设计的时序。如果违反任何时序约束,设计者必须重新设计RTL模块或者改变设计约束。循环反复,

20、直到满足时序要模块或者改变设计约束。循环反复,直到满足时序要求为止。求为止。 EDA技术逻辑综合建模技巧:逻辑综合建模技巧:Verilog编码风格编码风格 使用有意义的信号和变量名称使用有意义的信号和变量名称 信号和变量的命名应具有意义,使代码自身有清晰的注释信号和变量的命名应具有意义,使代码自身有清晰的注释信息。信息。 避免混合使用上升沿和下降沿触发的触发器避免混合使用上升沿和下降沿触发的触发器 混合使用上升沿和下降沿触发的触发器可能在时钟树中引混合使用上升沿和下降沿触发的触发器可能在时钟树中引入反向器和缓冲器。这将在电路中引入时钟偏斜。入反向器和缓冲器。这将在电路中引入时钟偏斜。 使用基本

21、构造模块与使用连续赋值语句的对比使用基本构造模块与使用连续赋值语句的对比 连续连续assign语句非常简洁的表示功能,通常能生成性语句非常简洁的表示功能,通常能生成性能很好的随机逻辑电路。但最终的逻辑结构不一定对称。能很好的随机逻辑电路。但最终的逻辑结构不一定对称。 调用调用基本构造模块基本构造模块可以产生对称的设计,且逻辑综合可以产生对称的设计,且逻辑综合工具能更高效地优化小模块。但不太简洁,制约了针对变工具能更高效地优化小模块。但不太简洁,制约了针对变化工艺的重定向,并且通常会降低仿真器性能。化工艺的重定向,并且通常会降低仿真器性能。 EDA技术 调用多路选择器与使用调用多路选择器与使用i

22、f-else或者或者case语句的对比语句的对比 结构化的实现,最好直接使用结构化的实现,最好直接使用多路选择器多路选择器,更容易控制,更容易控制,综合速度更快,但综合速度更快,但依赖于工艺依赖于工艺,且表达,且表达代码比较长代码比较长。 if-else和和case常用于建立不依赖工艺的常用于建立不依赖工艺的RTL描述。描述。 使用圆括号优化逻辑结构使用圆括号优化逻辑结构 设计者可以使用圆括号将逻辑设计者可以使用圆括号将逻辑组合组合起来,以便于控制最终起来,以便于控制最终的结构,也提高了的结构,也提高了Verilog描述的可读性。描述的可读性。 逻辑综合建模技巧:逻辑综合建模技巧:Verilo

23、g编码风格编码风格 EDA技术 使用算术操作符使用算术操作符*,/和和%与使用现有构造模块的对比与使用现有构造模块的对比 乘、除、取模操作在乘、除、取模操作在逻辑和面积上逻辑和面积上实现代价高,但不依赖实现代价高,但不依赖于工艺;设计自定义模块完成乘、除和取模操作,可能要于工艺;设计自定义模块完成乘、除和取模操作,可能要花费大量的时间,并且花费大量的时间,并且RTL描述会变得描述会变得与工艺相关与工艺相关。 注意多条赋值语句对同一个变量赋值的情况注意多条赋值语句对同一个变量赋值的情况 多条赋值语句对同一个变量赋值可能导致生成意料之外的多条赋值语句对同一个变量赋值可能导致生成意料之外的电路。前面

24、的赋值可能被忽略,只电路。前面的赋值可能被忽略,只最后一次赋值最后一次赋值起作用。起作用。 显式地定义显式地定义if-else或者或者case语句语句 在在if-else或者或者case语句中必须说明各种可能的条件分支,语句中必须说明各种可能的条件分支,否则可能产生电平敏感的锁存器,而不是多路选择器。否则可能产生电平敏感的锁存器,而不是多路选择器。逻辑综合建模技巧:逻辑综合建模技巧:Verilog编码风格编码风格 EDA技术设计划分设计划分 水平划分水平划分 使用使用位划分位划分方式为逻辑综合工具提供更小的模块进行优化,方式为逻辑综合工具提供更小的模块进行优化,这种方式称为这种方式称为水平划分

25、水平划分。 降低了问题的降低了问题的复杂度,为每复杂度,为每个模块产生了个模块产生了更为优化的结更为优化的结果。果。EDA技术 垂直划分(编写的大模块包含多种功能)垂直划分(编写的大模块包含多种功能) 把模块把模块按功能按功能划分成更小的子模块。划分成更小的子模块。 设计划分设计划分EDA技术 并行化设计结构并行化设计结构 用更多的资源来生成运行速度更快的设计。用更多的资源来生成运行速度更快的设计。 将将顺序操作顺序操作转换成转换成并行操作并行操作,以提高运行速度。,以提高运行速度。 超前进位加法器超前进位加法器 比较比较 脉动进位加法器脉动进位加法器 设计划分设计划分EDA技术 小结小结 逻

26、辑综合:把设计的逻辑综合:把设计的高层次描述高层次描述转换成优化的、使用工艺库转换成优化的、使用工艺库中单元描述的中单元描述的门级描述门级描述。 并非所有并非所有的的Verilog结构都能被逻辑综合工具接受。结构都能被逻辑综合工具接受。 逻辑综合工具逻辑综合工具接受接受RTL描述、设计约束和工艺库,描述、设计约束和工艺库,产生产生优化优化的门级网表。的门级网表。 翻译、逻辑优化和工艺映射翻译、逻辑优化和工艺映射是逻辑综合工具内部的过程,它是逻辑综合工具内部的过程,它们对用户通常是不可见的。们对用户通常是不可见的。EDA技术 通过把相同的激励应用到通过把相同的激励应用到RTL描述和门级网表并比较

27、输出描述和门级网表并比较输出结果,结果,验证优化后的门级网表验证优化后的门级网表的功能。的功能。 必须使用必须使用适当的适当的Verilog编码技术编码技术编写编写高效高效的的RTL模块。模块。必须必须评估评估设计的各种选择方案。设计的各种选择方案。 设计划分设计划分是用于将设计分割成更小模块的重要技术。更小是用于将设计分割成更小模块的重要技术。更小的模块的模块减少减少了综合工具优化的了综合工具优化的复杂度复杂度。 精确的精确的设计约束设计约束指定是逻辑综合的重要组成部分。指定是逻辑综合的重要组成部分。 小结小结 EDA技术返回EDA技术返回EDA技术EDA技术本章学习目标本章学习目标解释在V

28、erilog仿真中如何使用PLI子程序。定义用户自定义系统任务和函数以及用户自定义C子程序。理解用户自定义系统任务的连接和调用。从概念上解释在Verilog仿真器内部如何表示PLI。区别并描述怎样使用两类PLI库子程序:access子程序和utility子程序。学习如何创建用户自定义系统任务和函数,并学习如何在仿真中使用它们。EDA技术概述概述 在设计时,经常会遇到一些特殊情况,需要通过定义自己的系统任务和函数才能实现设计目标。编程语言接口提供了一组接口子程序,用于访问内部的数据表示,并可以提取仿真环境信息。 用户自定义的系统任务和函数可以通过这组预定义的PLI接口子程序来创建。EDA技术 V

29、erilog PLI的发展经历了三代。 1任务/函数(tf_)子程序(又称实用子程序)。主要用于:用户自定义的任务和函数、实用函数、回调机制和把数据写到输出设备。 2存取(acc_)子程序。可直接在Verilog HDL内部数据结构中进行面向对象的数据存取。这些子程序能用于访问和修改Verilog HDL描述的多种对象。 3Verilog过程接口(vpi_)子程序。这些子程序是acc_和tf_子程序功能扩展的集合。概述概述EDA技术 难以用标准的Verilog结构实现系统任务和函数:监控任务、激励任务、调试任务和复杂操作等。 提取设计信息,比如层次、互连、扇出等。 编写专用或自定义的输出显示子

30、程序。 为仿真提供激励的子程序也可以用PLI编写。 普通的基于Verilog的应用软件,可以与任何Verilog仿真器一起工作,因为PLI接口提供了统一的存取方式。概述概述EDA技术使用使用PLI子程序的规范仿真流程子程序的规范仿真流程用户自定义用户自定义系统任务连系统任务连接到一个用接到一个用户自定义户自定义C子程序子程序以以PLI接口子接口子程序标准库程序标准库的方式实现的方式实现PLI接口允许用户:接口允许用户:读取读取/ /修改内部数修改内部数据结构、存取仿真据结构、存取仿真环境环境EDA技术PLI任务的连接和调用功能:当系统任务$hello_verilog被调用时,输出一条消息“He

31、llo Verilog World”。 首先,实现该任务的C子程序必须用PLI库子程序定义。hello_verilog.c中的子程序hello_verilog如下:io_printf是是PLI库子程序,其功能类似于库子程序,其功能类似于printf。hello_verilog是用户自定义是用户自定义C子程序子程序$hello_verilog是用户自定义系统任务是用户自定义系统任务EDA技术 仿真器要连接到C子程序hello_verilog, 意识到存在一个名为$hello_verilog的新系统任务。 生成一个包含$hello_verilog新系统任务的特殊的二进制可执行文件,设文件名为hve

32、rilog,这已不是惯用的运行仿真器的二进制可执行文件。仿真时,不要运行惯用的仿真器可执行文件(如Verilog-XL),只需要运行hverilog就可以。 用户自定义任务被连接到Verilog仿真器中,可以像任何其他Verilog系统任务,通过关键字$hello_verilog来调用。 PLI任务的连接任务的连接PLI任务的连接和调用EDA技术 hello.v中定义了一个名为hello_top的Verilog模块,该模块调用了用户自定义任务$hello_verilog: 输出结果: PLI任务的调用任务的调用PLI任务的连接和调用EDA技术PLI任务的连接和调用 添加和调用PLI任务的典型流

33、程EDA技术PLI内部数据表示1. 每个模块被看做一组对象类型,对象类型是Verilog中定义的元素,如: 模块实例、模块端口、模块的端到端路径以及模块之间的路径 顶层模块 原语实例和原语端口(terminal) 线网类型(net)、寄存器类型(register)、参数类型(parameter和 specparam) 整型、时间型和实型变量 时序检查 名事件 每种对象类型都有一个相应集合,包含模块中所有该类型的对象,所有对象类型的集合互连在一起。EDA技术PLI内部数据表示双向双向EDA技术PLI内部数据表示包括原语实例、原语实例端口包括原语实例、原语实例端口(terminal)、模块端口和网

34、络。、模块端口和网络。其他对象类型在本模块中没有出现其他对象类型在本模块中没有出现 EDA技术EDA技术PLI库子程序1. PLI库子程序提供了对表示设计的内部数据结构进行存取的标准接口,用户自定义C子程序是用PLI库子程序编写的。 PLI库子程序有两大类: 存取子程序-提供了对内部数据结构访问的接口,它允许用户的C子程序遍历数据结构并提取与设计有关的信息。 实用子程序-主要用于在Verilog和编程语言的边界之间传送数据并做一些日常管理维护工作。 EDA技术PLI库子程序详细参见详细参见Verilog HDL数字设计与综合数字设计与综合(第二版第二版)的附录的附录BEDA技术PLI库子程序存

35、取子程序通常也称为acc子程序。可以完成下列工作: 1. 从内部数据结构的有关项读取特定对象的信息 2. 把特定对象的信息写入内部数据结构的有关项 可以读取设计中的对象的类型: 1.模块实例、模块端口、模块的端到端路径以及模块之间的路径 2.顶层模块 3.原语实例和原语端口 4.网络类型(net)、寄存器类型(register)、参数类型(parameter和specparam)、整型、时间型和实型变量 5.时序检查 6.命名事件 存取子程序存取子程序EDA技术PLI库子程序 存取子程序的特征 存取子程序总是以前缀acc_开头。 使用存取子程序的用户自定义C子程序必须调用子程序acc_init

36、ialize( ),以初始化环境。退出时,用户自定义子程序必须调用acc_close( )。 如果一个文件中用到存取子程序,那么必须包含头文件acc_user.h。所有存取子程序的数据类型和常量都预定义在文件acc_user.h中。存取子程序使用句柄的概念来访问对象。对象句柄标识符由关键字handle声明。EDA技术PLI库子程序 存取子程序的分类句柄子程序。返回句柄给设计中对象,名字以前缀acc_handle_开头。后继子程序。返回句柄给设计中特定类型对象集合中的下一个对象。以前缀acc_next_开头,以引用的对象作为参数。值变链接(VCL)子程序。从监视对象值变化的对象列表中添加和删除对

37、象。以前缀acc_vcl_开头,没有返回值。取值(fetch)子程序。提取各种对象信息,比如完整的层次路径名、相对名以及其他属性信息。以前缀acc_fetch_开头。实用存取子程序。执行与存取子程序相关的杂项操作。如,acc_initialize( )和acc_close( )都是实用子程序。修改子程序。修改内部数据结构。可参考IEEE Standard Verilog Hardware Description Language文档。EDA技术PLI库子程序 存取子程序例1:获取模块端口列表功能描述:写一个用户自定义系统任务$get_ports 寻找模块中的所有input,output和ino

38、ut端口的完整层次名称;计算input,output和inout端口的数目。 这个用户自定义系统任务在Verilog中以$get_ports (“”)的形式调用。文件get_ports.c的用户自定义C子程序get_ports:EDA技术EDA技术PLI库子程序顶层模块:仿真输出:EDA技术PLI库子程序 实用子程序 实用子程序的特征 1. 实用子程序总是以前缀tf_开头。 2. 文件使用实用子程序,必须包含头文件veriuser.h。 实用子程序的类型 1. 获取Verilog系统调用任务的信息 2. 获取参数列表信息 3. 获取参数值 4. 把参数新值回传给调用它的系统任务 5. 监视参数值的改变 6. 获

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论