网站连通率,企业网站管理系统 源码,做红木家具推广哪个网站比较好,wordpress 分类目录 子目录命名的结束语句
1、命名的模块结尾 SystemVerilog允许关键字endmoule后指定模块的名字
endmoule:module_name
endmodule后指定的名称必须与匹配的模块名称一致2、命名的代码块结尾 SystemVerilog还允许对其他命名的代码块指定结尾名称。这包括以下关键字#xff1a;…命名的结束语句
1、命名的模块结尾 SystemVerilog允许关键字endmoule后指定模块的名字
endmoule:module_name
endmodule后指定的名称必须与匹配的模块名称一致2、命名的代码块结尾 SystemVerilog还允许对其他命名的代码块指定结尾名称。这包括以下关键字interface…endinterface、task…endtask、function…endfunciton和begin…end以及其他主要用于测试平台的命名代码。 3、嵌套局部模块的声明 模块的名称时全局性的 对模块名称的访问不受限制 全局名称有可能导致冲突发生 在模块捏声明模块 SystemVerilog提供了一种简便和精准的方法可以限制在哪里实例化模块而且这种方法能避免与其他具有相同名称的模块发生潜在的冲突。这个方法既是允许一个模块的定义嵌套在另一个模块的定义之中。嵌套的模块在声明的层次域之外是不可见的。
module chip(input wire clock);//顶层设计dreg i1(clock);ip_core i2(clock);
endmoudle:chipmodule dreg(input wire clock);//全局模块定义
...
endmodule:dregmodule ip_core(input wire clock);//全局模块定义sub1 u1(...);sub2 u2(...);module sub1(...);//嵌套模块定义...endmodule:sub1module sub2(...);//嵌套模块定义...endmodule:sub2
endmodule:ip_core嵌套模块定义可以位于几个独立文件中 通常的风格是把每个模块放到一个单独的文件中
使用include避免因多个模块放在同一源文件中而引起混淆使用嵌套模块定义会使用顶层模块的源代码文件包含多个模块定义。另外如果嵌套模块的源代码被掩藏在顶层模块下那么它会难于维护并且很难在其他设计中重用。 3.1嵌套模块名称的可见性 嵌套模块的名称不是全局的 嵌套模块的名称并不像其他模块名称一样放在全局模块定义命名域内。嵌套模块的名称只在其父模块的命名域内。也就是说嵌套模块可以使用和在设计的任何地方定义过的模块一样的名称而不会引起全局模块定义命名域内的任何冲突。 嵌套模块的层次化路径 与模块实例一样嵌套模块也有层次化域名。嵌套模块中的变量、线网和嵌套模块中的其他声明都可以在验证层次haul引用就好像在设计中的其他模块里声明一样。 嵌套模块可以例化其他模块 嵌套模块可以实例化其他模块 嵌套模块可以实例化其他模块。这些模块的定义可以位于三个命名域中全局模块定义命名域、嵌套模块的父模块或嵌套模块内的模块作为另一个嵌套模块定义。 3.2实例化嵌套模块 嵌套模块和普通模块的实例化方法一样 实例化嵌套模块的方法和普通模块一样。嵌套模块可以被其父模块任意次数地显式实例化也可以在父模块下面层次数的任何地方实例化。嵌套模块实例和普通模块实例化而普通模块可以在设计层次中的任何地方实例化。
module ip_core(input clpck);sub1 u1(...);//嵌套模块sub1实例化module sub1(...);//嵌套模块定义sub2 u2();...endmodule:sub1module sub2;//嵌套模块定义//sub2没有端口但可以看到其父模块源码中的标识符...sub3 u3(...);endmodule:sub2module sub3(...);//嵌套模块定义...endmodule:sub3
endmodule:ip_core3.3嵌套模块的名称搜索规则 嵌套模块有局部作用域 和普通模块一样嵌套模块也有自己的命名域。嵌套模块的定义中可以包含也可以不包含端口。嵌套模块的端口名称是该模块内的局部名称。嵌套模块内的所有网线、变量、任务。函数和其他声明都是fail模块的局部量。 嵌套模块可以引用父模块中的名称 嵌套模块的名称搜索规则与普通的模块不同。从语义上讲嵌套模块类似于Verilog的任务嵌套模块可以看到父模块中的信号。和任务一样如果引用的名称既不在嵌套模块的局部作用域内就会到其父模块内就会在编译单元域内查找。这样嵌套模块就可以引用那些外部定义的编译单元内的变量、常量、任务、函数和用户自定义类型。 非嵌套模块沿实例化树向上搜索 需要着重注意的是嵌套模块的向上搜索与非嵌套模块的向上搜索规则不同。非嵌套模块位于全局模块定义域内没有父源代码。当非嵌套模块引用一份没有在模块内声明的标识符时如变量名或函数名名称的搜索路径使用实例化层次树包括编译单元域。 嵌套模块在源代码中向上搜索 而嵌套模块的定义是有父源代码。当嵌套模块引用没有在嵌套模块内定义的标识符时搜索路径是在定义这个嵌套模块的父模块中查找而不是在实例化该模块中查找。 4、简化的模块实例网表 网表将模块实例连接起来 网表是用网将端口连接在一起的模块实例的列表。在设计的许多层次–从高抽象级设计中主要功能块的连接到具体实现层次中进行ASIC或门级等分立部件的连接都要用到网表。网表通常由综合编译器等软件工具自动生成但是在连接主要设计模块时通常需要人工定义网表。在顶层模块中即使是在功能块层次上网表的规模也经常非常大有可能存在很多潜在的难于调试的连接错误。 4.1、隐式的.name端口连接 .name是端口名称连接的简化方式 SystemVerilog提供了能大大简化网表的三种方法.name端口连接.*端口连接和接口。 .name简化了连接模块实例的过程 .name端口连接语法结合了自成文档代码中使用的按端口次序连接方式的简洁性和端口名称连接方式的次序独立性这两方面优点同时消除了这两种Verilog风格的缺点。 .name推断出同名线网和端口连接 .name可以和端口名称连接方式结合