敏捷硬件开发语言Chisel与数字系统设计 课件 第9章 其他议题_第1页
敏捷硬件开发语言Chisel与数字系统设计 课件 第9章 其他议题_第2页
敏捷硬件开发语言Chisel与数字系统设计 课件 第9章 其他议题_第3页
敏捷硬件开发语言Chisel与数字系统设计 课件 第9章 其他议题_第4页
敏捷硬件开发语言Chisel与数字系统设计 课件 第9章 其他议题_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.其他议题西安交通大學XI'ANJIAOTONGUNIVERSITY目

录一、重命名模块名称二、命名规则三、重命名模块内信号名称四

、参数化的Bundle五、FixedPoint六、assert七、总结2一

、重命名模块名称万安文通大学xIAN

|1A(IN

。1:NIVFRSIIY3一、重命名模块名称Chisel

生成Verilog

的模块名默认使用Chisel中的类名。通过重写desiredName

方法重命名生成Verilog

的模块名。模块和黑盒都适用。4module

SaltDrink(input

clock,input

resetwire

[31:0

]drink_I;wire

[31:0

]drink_O;Tea

drink(.I(drink_I)

,.O(drink_O)assign

drink_I=32'h0;endmoduleclass

Coffeeextends

BlackBox{val

io

=I0(new

Bundle{val

l=Input(UInt(

32.W)val

O=Output(UInt(

32.W))overridedefdesiredName

=

"Tea"class

SaltextendsModule{val

io

=I0(new

Bundle{})val

drink

=Module(

new

Coffee)

overridedefdesiredName

="SaltDrink"例

:Chisel

Verilog一、重命名模块名称5二、命名规则万安文通大学xIAN|IA(I(N

。1:NIVERSIIY6Chisel难以可靠地捕获信号名称是一个历史性问题,主要是因为Chisel

依靠反射来查找名称。Chisel3.4引入了一个Scala

编译器插件,它能可靠地捕获信号名称。插件的作用:①给中间变量名加前缀②函数调用或者作用域里面定义的信号名生成

Verilog

时使用Chisel

变量名二、命名规则7三、重命名模块内信号名称安文通。1:NI大VERSI学IY|IA(I(N8chisel3.experimental

包里的prefix

和noPrefix

可以用来增加自定义前缀和去除前缀:prefix用来增加自定义前缀,但是会保留前缀中的左侧变量名;noPrefix

可以去掉前缀中的左侧变量名;如果只想生成自定义的前缀,先使用prefix加自定义前缀,再使用noPrefix去除前缀中的左侧变量名。注:如果先使用noPrefix

再使用prefix

只能去掉前缀中的左侧变量名,不会添加自定义前缀名。3.1前缀重

称93.2suggestName如果想更改生成Verilog的信号名称,可以使用suggestName

方法。如果在生成中间变量过程中使用suggestName,会生成相应的前缀。如果想去掉该前缀,使用noPrefix去除。suggestName

添加的名字可能不会出现在Verilog中,比如该信号被优化

。三、重命名模块内信号名称103.3forceNameforceName

是chisel3.util.experimental里的单例对象,它可以更改信号名、端口名、实例名。用法是foceName

(信号名/端口名/实例名,字符串)注:使用时需要import

chisel3.util.experimental.forceName三、重命名模块内信号名称11四

、参数化的Bundle万安文通大学xIAN

|1A(IN

。1:NIVFRSIIY12四、参数化的Bundle当一个Bundle

类的对象用于创建线网、IO

等操作时,它并不是把自己作为参数,而是交出自己的一个复制对象,也就是说编译器需要知道如

何来创建当前Bundle

对象的复制对象。Chisel提供了一个内部的API函数cloneType

,任

自Data

的Chisel对象,要复制自身时,都是由cloneType

负责返回该对象的复制对

。13当自定义的Bundle

的主构造方法没有参数时,Chisel会自动推断出如何构造Bundle

对象的复制。但是,如果自定义的Bundle

带有参数列表,

那么Chisel就可能无法推断了。此时需要自己重写Bundle

类的cloneType方法,其形式如下:override

def

cloneType=(new

CustomBundle(arguments)).asInstanceOf[this.type]四、参数化的Bundle14五、FixedPoint万安文通大学xIAN

|1A(IN

。1:NIVFRSIIY15五

、FixedPoint在设计电路中有时需要用到定点数,在chisel3.util.experimental包里定义了FixedPoint密封类和伴生对象。构造FixedPoint需要两个参数:FixedPoint(width:Width,binaryPoint:BinaryPoint)width:

定点数的位宽binaryPoint

:

尾数位位宽FixedPoint

类也定义了很多方法,包括算术运算、位操作、比较操作等,详情见API文档和源码。16六、assert安文通。1:NI大VERSI学IY|IA(I(N17有时需要在构建电路时限制参数条件,或者对电路内信号进行断言,如果信号不满足断言的条件则报错,实现上述功能可以使用chisel3包中的

assert方法。assert

方法可以接受一个参数、两个参数、多个参数。一个参数:只有判断条件,可以是Bool类型或者是Boolean

类型,也就是说assert

同时支持scala

chisel

的逻辑判断。两个参数:判断条件和字符串,如果判断条件不成立,报错信息会输出这个字符串。多个参数:判断条件、字符串和信号名,当判断条件是Bool类型时,可以在字符串中使用%格式化输出多个信号值。、assert18七、总结

安文通。1:NI大VFRSI学IY|1A(IN19

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论