2011-07-25 42 views
2

当我实例化一个模块并且我只关心输出中的某些位时,是否有一种简短的语法来丢弃这些位?喜欢的东西模块输出中的Verilog级联

my_module module_instance 
( 
.some_output({garbage1,important1[7:0]}) 
); 

在这种情况下,信号some_outputmy_module是9个位宽,但我只想低8位粘成important1。我可以用所有的9位数来产生一个信号,然后从中选择8,我知道编译器会优化它,但是我正在寻找一个成语或缩写。

+0

你提到的任一选项都很好看。 – 2011-07-25 22:54:05

+4

这种方法的一个缺点(忽略输出)是你通常会从合成器得到关于它的警告。没有什么大不了的,除非你想尽量减少消息,以便更容易地抓住重要的消息。 –

回答

3

如果参数的模块输出口的宽度,然后传递参数的情况下,就没有必要创建一个信号扔掉未使用的位:

my_module module_instance #(.WIDTH(8)) 
( 
.some_output(important1[7:0]) 
); 
1

一种选择是,按照工具建议,参数化模块。如果你坚持使用宽端口,我不知道有任何无缝的方式来放弃额外的位。使用1'bz未使用的位是诱人的,但是不合法。

如果未使用的位是MSB,则可以将9位端口连接到8位信号,但这是糟糕的编码风格,并且会导致来自某些工具的警告。

一种可能性是为未使用的信号定义一个约定,例如,后缀_NC(无连接)。这将有助于记录意图。您也可以使用模式匹配过滤关于悬挂信号的任何警告,而不是单独列出信号。

另一种可能性,特别是如果您采用编码风格,信号在通过端口时未重新命名,则应通过端口保留信号的全宽并在其他位置修剪额外的位。

+0

使用'nc_'就是我最终做的事情。但它并没有经常出现。 – Marty