马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Timme 于 2017-4-1 23:36 编辑
比如对create_power_switch命令,-ack_port开关在UPF 1.0/2.0/2.1中的定义:
- UPF 1.0 & 2.0:-ack_port {port_name net_name [{boolean_function}]}
- UPF 2.1: -ack_port {port_name net_name [logic_value]}
复制代码
对最后那个boolean_function或logic_value,不同版本的定义:
- UPF 1.0:If a boolean_function is specified for –ack_port, the result of boolean_function is driven on –ack_port’s port_name after a control port transition. Otherwise, a logic 1 shall be driven after the switch is closed.
- UPF 2.0:If a boolean_function is specified for -ack_port, the result of boolean_function is driven on -ack_port’s port_name after a control port transition. Otherwise, a logic 1 shall be driven after an -on_state evaluates to True.
- UPF 2.1:If a logic_value is specified for -ack_port, that logic value shall be used as the acknowledge value for a transition to FULL_ON, and its negation is used as the acknowledge value for a transition to OFF. Otherwise the acknowledge value defaults to logic 1 for a transition to FULL_ON.
复制代码
最重要的是,各EDA工具对不同UPF版本的 Parse:
- JasperGold:严格依照版本标准 Parse
- SNPS:就算你设成2.1,我也按2.0 Parse
- CDNS:就算你设成2.0,我也按2.1 Parse
复制代码
在UPF的各种坑里,这只是冰山一角...
//--------------------------------------------------------------------
一个具体例子:
如果你在UPF文件里把版本设成2.1,然后写成 -ack_port {yourPort yourNet !SLEEP},那么,
- JasperGold在编译时会报错,因为2.1标准规定了最后那个参数是logic_value(0或1),而不是boolean_function
复制代码
如果你按照UPF 2.1标准改写成 -ack_port {yourPort yourNet 0},那么,
- 在VCS前仿时,只要发生过一次control port transition,yourPort就会一直卡死在0,无法再次翻转
复制代码
如果你直接省略最后一个参数,写成 -ack_port {yourPort yourNet},那么,
|