您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > Verilog中一些综合指令
Verilog中一些综合(synthesis)指令black_box_pad_pin声明用户定义的黑盒的管脚,作为外部环境可见的I/Opad,如果有不止一个端口,列在双引号内,以逗号分开。一般不需要这一属性,Synplify提供了预定义的I/Os。其语法如下object/*synthesissyn_black_boxblack_box_pad_pin=port_list*/;例如:moduleBS(D,IN,PAD,Q)/*synthesissyn_black_boxblack_box_pad_pin=;PAD*/;block_box_tri_pins声明黑盒的一个输出端口是三态,如不止一个列在双引号内以逗号分开。其语法如:P(d;F6A&b4?%f0Iobject/*synthesissyn_black_boxblack_box_tri_pins=port_list*/;例如:moduleBBDLHS(D,E,GIN,GOUT,PAD,Q)/*synthesissyn_black_boxblack_box_tri_pins=;PAD*/;full_case仅用于Verilog,与case语句一起使用,表明所有可能的状态都已经给出,不需要其他逻辑:X%F2BF.t!x.\.x3O5d'm保持信号的值。语法如下:object/*synthesisfull_case*/其中object可以是case、casex、casezstatementsdeclarationparallel_case仅用于Verilog,与case语句一起使用,强制生成一个并行的多路选择结构而不是一个优先译码结构。其语法:/[)h9T%c'q5Uobject/*synthesisparallel_case*/其中object可以是case、casex、casezstatementsdeclarationsyn_block_box说明一个module或component为黑盒,仅利用其界面进行综合而不管是否内部为空,也不进行优化。一般应用于厂家原语或宏,或IP等用户定义的宏。对于厂家I/O或其他一些厂家的宏,通常不需此属性,Synplify提供预定义的黑盒。其语法如下:object/*synthesissyn_black_box*/;其中object可以是moduledeclaration.syn_encoding强制选择自动机实现的方式,其可选值如下:default-综合根据状态的数量选择编码方式,编码方式可以是:onehot、gray、sequentiaonehot-采用onehot编码方式!gray-采用格雷码sequential-采用自然码safe-如果不能到达任一个状态时,让其回到复位态其语法如下:object/*synthesissyn_encoding=value*/;其中object是状态寄存器定义syn_isclock说明黑盒的一个输入是时钟信号。对名字为clk、rclk、wclk的黑盒输入信号,软件自动当作时钟,可以用这个属性说明任意输入信号为时钟信号。其语法如下:object/*synthesissyn_isclock=0|1*/;其中object是黑盒的inputport例如:moduleram4(myclk,out,opcode,a,b)/*synthesissyn_black_box*/;output[7:0]out;inputmyclk/*synthesissyn_isclock=1*/;input[2:0]opcode;input[7:0]a,b;/*Othercoding*/syn_keep保证被指定的wire在综合中保持不动,不会被优化掉。用于在define_multicycle_path或define_false_path用了-through选项。如果你使用了这一属性,将生成一个keepbuf,可以对其定义时间约束,这个Buffer只占用一个位置,不出现在门级网表里。其语法如下:object/*synthesissyn_keep=0|1*/;其中object是wire或reg声明syn_noprune用来保持一个或多个component的实例,即使其输出不能映射。一般无此指示的情况下,有着未用输出端口的实例会从EDIF文件中删除。它可被置于约束文件中,其语法如下:.sdc文件中define_attribute{module|instance}syn_noprune{0|1}Verilog中object/*synthesissyn_noprune=0|1*/;其中object可以是moduledeclaration也可以是实例。syn_preserve用在某些独立的寄存器上,或module(则相当于施加于module中的所有寄存器)上,使其在优化时保持不动。也可用于保持某个自动机在优化时不动。其语法如下:object/*synthesissyn_preserve=0|1*/;其中object可以是寄存器定义信号,也可以是Modulesyn_sharing使能/禁止综合时对运算符进行资源共享。缺省值是off,也可以在project视窗里设置这一选项。其语法如下:k1L.e9?+I#hobject/*synthesissyn_sharing=on|off*/;其中object可以是module定义语句。syn_state_machine使能对设计中的某组状态寄存器进行自动机优化。其语法如下:object/*synthesissyn_state_machine=0|1*/;其中object是该组状态寄存器!syn_tcon提供黑盒的输出延迟信息,参见8.2。语法如下:object/*syn_tcon=[!]clock-bundle=value*/;其中bundle是总线或标量信号的集合syn_tpdn提供穿过黑盒的组合逻辑的传输延迟信息,参见8.2。语法如下:object/*syn_tpdn=[!]clock-bundle=value*/;其中bundle是总线或标量信号的集合syn_tristate指定黑盒的一个输出端口为三态。其语法如下:object/*synthesissyn_tristate=0|1*/;其中object可以是黑盒的outputportsyn_tsun说明一个黑盒的输入要求的建立时间。参见8.2。其语法如下:object/*syn_tsun=[!]clock-bundle=value*/;translate_on/translate_off用于与其他综合软件的兼容。在这两个指示中间的所有代码将在综合时被忽略。也可以用于在源代码中插入一段仿真代码。其语法如下:/*synthesistranslate_off*/综合时忽略的代码。。。/*synthesistranslate_on*/
本文标题:Verilog中一些综合指令
链接地址:https://www.777doc.com/doc-5930641 .html