Robei用三个基本元素来代表Verilog里面的组成部分:模块、引脚和连接线。在Verilog语言里,电路用一系列模块(module)来描述。一个模块可以代表一个逻辑门、一个寄存器、一个ALU或者一个SOC系统。模块是一个抽象的芯片,在这个抽象的芯片上,又存在着抽象的引脚。引脚是模块中用来与外界通信的门户,每个引脚与其他的模块进行通信,都需要一个抽象的连接线。这个连接线可以是一根支线,也可以是一个总线。
模块是设计流程中的基本元素,可以看作一个黑盒子。在这个黑盒子里,设计者可以放置引脚用来做通信的门户,也可以放置设计好的模型和输入实现该模块功能的算法代码。根据设计阶段分类,一个模块可以细分为不同的类型。正在开发的当前模块都是“Module”类型,但是一旦设计完毕,便会保存成“Model”,这个模型可以在其他的模块中使用,而且部分属性进行了写保护,不能随意修改。模块中还有其他的类型,包括含有激励代码,用来实现仿真的“Testbench”类型,实现FPGA引脚分配的“Constrain”类型。
(1)Module:Robei的基本类型,当前正在设计的集成电路模块,保存后自动变成“Model”,用户可以修改任何属性,如图1-4-1和图1-4-2所示。
图1-4-1
图1-4-2
(2)Model:设计好的模块在其他模块中使用,自动变成“Model”类型。部分属性进行了写保护,但是用户还是可以修改其他的属性,如颜色、名称和参数等,如图1-4-3所示。
图1-4-3
(3)Testbench:测试模块对于验证设计非常重要,测试模块用来给予激励,调用设计好的模块,用来验证设计结果。如果要看到仿真结果,请确保顶层激励模块的属性设置成“testbench”,否则看不到波形分析,如图1-4-4所示。
图1-4-4
(4)Constrain:约束文件是用来对FPGA引脚进行分配的文件。因为每家FPGA厂商的引脚分配有不同的模式,所以Robei会根据不同的厂商自动生成对应于该厂商的引脚约束文件,但是在Robei软件上进行分配的方式是统一的。比如,Xilinx ISE的引脚约束文件是UCF文件,Vivado的引脚约束文件是XDC文件,Altera的引脚约束文件是QSF文件。如果要分配的引脚是一个总线,用户可以在连接线上声明要分配的引脚在总线中的编号,如图1-4-5所示。
图1-4-5
在引脚分配之前,用户需要在菜单“Settings”里面选择“FPGA”,用来选择正确的FPGA厂家。额外的约束可以用代码形式写在工作空间中的代码视窗中,如图1-4-6所示。
图1-4-6
在菜单“View”的下拉菜单中选择“CodeView”,就可以看到自动生成的引脚约束 代码,如图1-4-7所示。
图1-4-7
引脚是一个抽象的概念,可以对应于物理芯片上的一根针,或者开发板上的一个连接口,或者芯片上的一个总线。引脚是模块的门户,是模块与外界通信的接口。引脚就如同在黑盒子上打孔,如图1-4-8所示的,从外向内钻孔的时候,孔是外面大里面小,这是输入。从内向外钻孔的时候,孔是里面大外面小,这就是输出。还有一种既可以输入也可以输出的,就是两个方向上同时钻孔,内外大小一样。
图1-4-8
每个引脚的属性如图1-4-9所示。引脚的属性也有多种,如“reg”,“wire”,“supply”等。“Datasize”属性用来描述该引脚是单针还是总线。引脚只能在模块的边缘游走,不能进入模块也不能离开模块。当模块移动时,引脚也跟随移动。
图1-4-9
注意: 模型上引脚的一些属性是写保护的,不能修改,但是位置和颜色信息可以随意调整。
连接线用来连接两个引脚,并负责信号的传输。连接线就如同连接黑盒子上的两个孔的管子,两个孔之间要想水不洒出来,就需要密封的管子进行连接(图1-4-10)。集成电路也是一样,只不过集成电路使用的是导线连接,而流入流出的不再是水,而是电。
图1-4-10
通常情况下,连接线会继承起始引脚的颜色和数据宽度信息,然后颜色渐变为目标引脚的颜色。根据数据宽度的不同,连接线的粗细也不尽相同。
模块、引脚和连接线是Robei的三元素,通过这三元素,Robei把复杂的集成电路设计简化到最简,进一步降低了对集成电路入门的要求,方便用户快速进入集成电路设计,界面,如图1-4-11所示。
图1-4-11