chanon的个人空间 https://blog.eetop.cn/56214 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

HDL语言常见综合指令(转)

已有 1777 次阅读| 2011-2-28 11:18 |个人分类:(转)

(1) black_box_pad_pin
      声明用户定义的黑盒的管脚,作为外部环境可见的I/O pad,如果有不止一个端口,列在双引号内,以逗号分开。一般不需要这一属性,Synplify提供了预定义的I/Os。其语法如下
object /* synthesis syn_black_box black_box_pad_pin = "port_list" */ ;
例如:
module BS(D,IN,PAD,Q) /*synthesis syn_black_box black_box_pad_pin=";PAD" */;
(2) block_box_tri_pins
     声明黑盒的一个输出端口是三态,如不止一个列在双引号内以逗号分开。其语法如:
object /* synthesis syn_black_box black_box_tri_pins = "port_list" */ ;
例如:
module BBDLHS(D,E,GIN,GOUT,PAD,Q) /* synthesis syn_black_box
black_box_tri_pins=";PAD" */ ;
(3) full_case
     仅用于Verilog,与case 语句一起使用,表明所有可能的状态都已经给出,不需要其他逻辑保持信号的值。语法如下:
object /* synthesis full_case */
其中object可以是case、casex、casez statements declaration
(4) parallel_case
     仅用于Verilog,与case 语句一起使用,强制生成一个并行的多路选择结构而不是一个优先译码结构。其语法:
object /* synthesis parallel_case */
其中object可以是case、casex、casez statements declaration
(5) syn_block_box
     说明一个module或component为黑盒,仅利用其界面进行综合而不管是否内部为空,也不进行优化。一般应用于厂家原语或宏,或IP等用户定义的宏。对于厂家I/O或其他一些厂家的宏,通常不需此属性,Synplify提供预定义的黑盒。其语法如下:
object /* synthesis syn_black_box */ ;
其中object可以是module declaration.
(6) syn_encoding
     强制选择自动机实现的方式,其可选值如下:
default-综合根据状态的数量选择编码方式,编码方式可以是:onehot、gray、sequentia 
onehot-采用onehot编码方式! 
gray-采用格雷码
sequential-采用自然码
safe-如果不能到达任一个状态时,让其回到复位态
其语法如下:
object /* synthesis syn_encoding = "value" */ ;
其中object是状态寄存器定义
(7) syn_isclock
     说明黑盒的一个输入是时钟信号。对名字为clk、rclk、wclk的黑盒输入信号,软件自动当作时钟,可以用这个属性说明任意输入信号为时钟信号。其语法如下:
object /* synthesis syn_isclock = 0|1 */ ;
其中object是黑盒的input port
例如:
module ram4(myclk, out, opcode, a, b) /* synthesis syn_black_box*/;
output [7:0] out;
input myclk /* synthesis syn_isclock = 1 */;
input [2:0] opcode;
input [7:0] a, b;
/* Other coding */
(8) syn_keep
     保证被指定的wire在综合中保持不动,不会被优化掉。用于在define_multicycle_path或define_false_path用了-through 选项。如果你使用了这一属性,将生成一个keepbuf,可以对其定义时间约束,这个Buffer只占用一个位置,不出现在门级网表里。其语法如下:
object /* synthesis syn_keep = 0|1 */ ;
其中object是wire或reg声明
(9) syn_noprune
     用来保持一个或多个component的实例,即使其输出不能映射。一般无此指示的情况下,有着未用输出端口的实例会从EDIF文件中删除。它可被置于约束文件中,其语法如下:
.sdc 文件中
define_attribute {module|instance} syn_noprune {0|1}
Verilog 中
object /* synthesis syn_noprune = 0|1 */ ;
其中object可以是module declaration也可以是实例。
(10)syn_preserve
      用在某些独立的寄存器上,或module(则相当于施加于module中的所有寄存器)上,使其在优化时保持不动。也可用于保持某个自动机在优化时不动。其语法如下:
object /* synthesis syn_preserve = 0|1 */ ;
其中object可以是寄存器定义信号,也可以是Module
(11)syn_sharing
     使能/禁止综合时对运算符进行资源共享。缺省值是off,也可以在project视窗里设置这一选项。其语法如下:
object / * synthesis syn_sharing = " on|off " */ ;
其中object可以是module定义语句。
(12)syn_state_machine
      使能对设计中的某组状态寄存器进行自动机优化。其语法如下:
object /* synthesis syn_state_machine = 0|1 */ ;
其中object是该组状态寄存器!
(13)syn_tco<n>
      提供黑盒的输出延迟信息,参见8.2。语法如下:
object /* syn_tcon = "[!]clock -> bundle = value" */ ;
其中bundle是总线或标量信号的集合
(14)syn_tpd<n>
     提供穿过黑盒的组合逻辑的传输延迟信息,参见8.2。语法如下:
object /* syn_tpdn = "[!]clock -> bundle = value" */ ;
其中bundle是总线或标量信号的集合
(15)syn_tristate
      指定黑盒的一个输出端口为三态。其语法如下:
object /* synthesis syn_tristate = 0|1 */ ;
其中object可以是黑盒的output port
(16)syn_tsu<n>
      说明一个黑盒的输入要求的建立时间。参见8.2。其语法如下:
object /* syn_tsun = "[!]clock -> bundle = value" */ ;
(17)translate_on/translate_off
    用于与其他综合软件的兼容。在这两个指示中间的所有代码将在综合时被忽略。也可以用于在源代码中插入一段仿真代码。其语法如下:
/* synthesis translate_off */
综合时忽略的代码。。。
/* synthesis translate_on */

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 13

    获赞
  • 50

    评论
  • 2787

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-22 21:11 , Processed in 0.024798 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部