GUI界面约束方法
界面约束方法易上手,但效率较低。有两种方式可以打开设置 IO 约束的界面:(必须完成 Syn Opt 的 Read Design 才可打开,否则处于置灰状态)1. 在 FPGA Flow 面板中,展开 User Constraints,双击 IO Constraint;
2. 在菜单栏中展开 Tools,双击 IO Constraint。
在已打开的 IO Constraint 界面中设置每个端口的 Bank、 Location、 PullType、IOStandard 等参数。IO 界面配置属性如下表所示
芯片封装为 BGA256 时, IO 约束的配置界面如下图所示
各形状中的红色小点表示该 IO 端口已被占用。 鼠标停留在 IO 某一端口时,会有浮窗显示该端口的信息,并有白色边框将其所在 Bank 显示出来。
用户还可以通过界面左侧的 Pin Resource 和 Pin Characteristic 来区分 Bank,勾选后显示出的各种颜色如下图所示。其中,红色: 时钟、品红色:电源、 灰色:接地,这三种类型的端口不属于任何 Bank。 左上角的红色原点对应芯片上的小凹点,表示芯片引脚的起始点。
其中短斜线表示差分对,如上图中的 B1 (positive) 和 F3 (negative)。 若选择 B1 的IOStandard 属性为 LVDS25,则 TD 自动分配相应的差分对管脚 F3(negative), F3 的IOStandard 属性也为 LVDS25, 如下图的 beep 对应的差分信号为 beep(n)。
当芯片封装为 LG144 时, IO 约束配置属性如表 4-1,配置界面如下图:
BANK和LOCATION的设置:
芯片封装不同时, 管脚数和管脚名称不同, Bank 数也不同,以 Anlogic AL3-10 系列为例, IO 管脚共分为 8 个 Bank。管脚位置设置时可先指定 Bank,再指定 Bank 中的
Location,或直接指定 Location, TD 会自动匹配相应的 Bank。 若只选择 Bank,而不指定 Location 时, TD 会默认为用户选择这个 Bank 中管脚号最小的 Pin 作为这个管脚的 Location。 Location 还支持直接输入管脚名称, 在 Location 处双击并输入需要的管脚名称, TD 同样会自动匹配相应的 Bank。
当指定 Location 为 VirtualIO 时,则该 Port 被指定到了一个非物理 IO,不属于任何Bank,在综合布线时,也不会为其分配任何 IO 资源, VirtualIO 的所有电平参数都不可设置。 界面支持一键设置 VirtualIO 功能,点击左上角
按钮,会自动给未分配管脚的 Port 分配成 VirtualIO。此外, 界面支持拖拽功能,点击选中一个 Port Name,并拖拽至上方图形界面处想要分配给该 Port 的 Location。完成拖动后,该 Location 出现红点,下方 Port 的 location信息也会相应变化。
IOstandard 的设置:
IOStandard 设置 IO 端口的电平标准。每个 Bank 都可以随意设置为支持该器件的电平标准,不同的电平标准在同一个 Bank 中的电平要一致。TD 提供 LVCMOS、 LVDS、LVTTL33、 PCI33 供用户选择。其中 LVCMOS 有 1.2v, 1.5V, 1.8V, 2.5V, 3.3V 的电压可选择。 LVDS为差分对输入输出,当所选的IO端口为输入信号时,只能选择LVDS25,LVDS33, LVPECL33; 所选 IO 端口为输出信号时,可选 LVDS25_E, LVDS33_E,LVPECL33_E。默认的电平标准为 LVCMOS25(default)。(不同器件的默认电平标准可能不同,请以各器件的数据手册及实际界面显示为准)
DriveStrength 的设置
DriveStrength 设置 IO 端口的驱动能力。不同电平标准的驱动能力不同,如LVCMOS25 的驱动能力为 4,8,12,16,单位为 mA。 DriveStrength 的值越小,表示驱动能力越弱, DriveStrength 的值越大,表示驱动能力越强。
PullType 的设置:
PullType 设置 IO 端口的上拉类型。PullType 共有四种选择: PULLUP、 PULLDOWN、NONE、 KEEPER。 数字电路有三种状态:高电平、低电平和高阻状态。当输入为无效信号的时候,可以通过上拉(PULLUP)电阻和下拉(PULLDOWN)电阻的方式使其处于稳定状态。当选择(KEEPER)时, 使电平保持为上一个有效值。当 IO 端口设为 LVDS 的时候, PullType 只能设为 None。
其他电平参数的含义及适用范围如下表所示:
参数
适用范围
含义
可选值
SlewRate
单端输出
输出压摆率
Slow, Med, Fast
DiffResistor
差分输入
差分端接电阻 100ohm
100, None
PCIClamp
单端输入、输出
PCI 电平标准要求有箝位
ON, OFF
PackReg
输入、输出
将寄存器打包到 pad 中Auto 表示按照全局设定值ON, OFF 的优先级高于全局设定值
Auto, ON, OFF
InDelay
输入
调节输入延时
实际延时取决于芯片及 IOB 的类型
OutDelay
输出
调节输出延时
实际延时取决于芯片及 IOB 的类型
Back Annotation 反标功能:
若工程中不存在或未完整设置 adc 文件, IO Constraint 界面支持 back annotation 反标功能。在 FPGA Flow 界面直接将工程运行至 Optimize Placement,打开 IO Constraint,点击界面左上角的反标按钮,会自动给未分配管脚的 Port 分配 Location, 界面上方相应的 location 位置会显示红点, 界面下方的 Location 信息显示为蓝色。 当所有设置都完成后,用户可单击左上角的保存按钮,输入文件的名称,单击保存,此时界面下方的 Location 信息显示为变为黑色。
当所有设置都完成后,用户可单击左上角的保存按钮,输入文件的名称,单击保存。若工程中已添加 adc 文件,打开 IO Constraint 界面时,会读取 adc 文件中的信息,更改设置后进行保存,将直接更新 adc 的内容。若工程中没有添加 adc 文件,保存后,将直接在工程中添加 adc 文件。
文本约束方法
适合对ADC语法比较熟悉的用户,适合大量管脚批量约束,可以进行编辑粘贴,配合编辑器的列功能简直无敌了。
新建 ADC 文件
1. 点击新建按钮
, 在新打开的窗口中输入 ADC 命令
2. 点击保存
按钮 , 将文件路径设置在项目目录下,文件名为 demo.adc, 然后单击保存。
添加 ADC 文件
1. 右键单击 Hierarchy Navigation 面板中 Project 里的 Constraints, 选择 AddADC File, 选择 demo.adc, 打开。
或者通过双击 FPGA Flow 面板中 User Constraints 下的 Add ADC File, 选择demo.adc,点击打开。 必须完成 Syn Opt 的 Read Design 才可打开,否则处于置灰状态。
* 工程中支持对一个constraint_1中添加多个adc文件, 当添加一个新的adc文件时,之前已添加的文件会被默认设置为disable, 即最后添加进工程的adc文件为enable。 可以通过右键选择File Properties更改adc文件的enable/disable属性。
ADC 约束说明
ADC(Anlogic Design Constraint)文件作为 TD 软件的用户物理约束文件,包含由用户指定的各类管脚及单元物理信息相关的约束。1. 管脚特性约束定义如下:set_pin_assignment {pin_name} {attributes}Pin_name: 电路的管脚名Attributes: 各类物理相关的属性,目前可支持的约束有 BANK, LOCATION,IOSTANDARD, DRIVESTRENGTH, PULLTYPE, PREEMPHASIS,SLEWRATE, DIFFRESISTOR, PCICLAMP, PACKREG 等 10 种。其中,对于位置约束(LOCATION),将检查目标位置是否合法,以及是否有多个管脚被分配至同一位置,一旦添加了 ADC 文件,要求为所有管脚锁定位置。注: PreEmphasis 预加重技术,是一种在发送端对输入信号高频分量进行补偿的信号处理方式,能有效提高输出信噪比。只有 LVDS 输出时需要加上, LVDS_E 是模拟 LVDS 输出,没有预加重的设置。格式范例:> set_pin_assignment {sys_clk} {LOCATION=P23; IOSTANDARD=LVCMOS18;DRIVESTRENGTH=4; PULLTYPE=PULLUP; SLEWRATE=MED; PCICLAMP=ON;PACKREG=ON; OUTDEL=1;}
IO 特性设置参数
PAMERATER
VALUE
BANK
BANK1, BANK 2, BANK 3, BANK 4, BANK 5, BANK 6, BANK 7, BANK 8
LOCATION
芯片封装不同,管脚数和管脚名都不相同
IOSTANDARD
LVCMOS12,LVCMOS15,LVCMOS18,LVCMOS25,LVCMOS33,LVDS25,LVDS25_E, LVDS33, LVDS33_E, PCI33, LVTTL33,LVPECL33, LVPECL33_E
DRIVESTRENGTH
2, 4, 8, 12, 16, 20, NA
PULLTYPE
PULLUP, PULLDOWN, NONE, KEEPER
SLEWRATE
FAST, MED, SLOW
DIFFRESISTOR
100, NONE
PCICLAMP
ON, OFF
PACKREG
AUTO, ON, OFF
注: IOSTANDARD 具体支持以各系列芯片的数据手册为准。对于有差分对输出 VCM 和 VOD 设置需求的用户,需要在 ADC 文件中手动设置VCM 和 VOD 的具体数值,格式范例如下:> set_pin_assignment {sys_clk} { LOCATION = A3; IOSTANDARD = LVDS33; VCM= 0.8; VOD = 350m }VCM 和 VOD 设置只针对 LVDS25 和 LVDS33,其他电平不支持。不同器件对于VCM 和 VOD 的设置不同,各个器件可设置的具体参数值如表 9-2 所示。
表 9-2 各个器件参数范围表
Device
VOD(mV)
VCM(V)
EG4
150、 200、 250、 350*、 480
0.8、 0.9、 1.2*
EF2
150、 200、 250、 350*、 480
不支持
EF3
150、 200、 250、 350*、 480
0.8、 0.9、 1.2*
AL3
150、 200、 250、 350*
0.8、 0.9、 1.2*
注:(1)不建议将 VOD 设置为 480mV。(2) *表示软件默认值, VOD 默认值为 350mV, VCM 默认值为 1.2V。(3) VCM 和 VOD 设置需根据上表中给出的具体数值设置,超出上表范围不支持。
2. 单元特性约束定义如下:set_inst_assignment {inst_name} {attributes}Inst_name: 电路的单元实例名, instance 的名字可在生成的网表文件(prj_gate_sim.v)中查找。Attributes: 目前仅支持位置约束 Location, location 可以在 Chip Viewer 中查找。 ChipViewer 的详细使用手册,请参考该文档的 8.2 Chip Viewer 章节。格式范例:> set_inst_assignment {PLL_INST1} {location = x34y37z0;}> set_inst_assignment {PLL_INST2} {location = x0y0z0;}> set_inst_assignment { _al_u451|lcd/lcd_rs_reg} {location = x21y17z1;}