记得之前在FPGA/CPLD助学小组里有网友提出过在Quartus II编译完成后的Flow Summary里出现的Virtual Pin,如图1所示。那它到底是怎么回事呢?

    Virtual Pin即虚拟管脚。在实际应用中,通常对于一个大的设计工程,Team Leader会将整个工程划分几个模块分别交给数位工程师完成。而对于一个固定的工程,它所使用的总的I/O数量是预先按需求定义好的,也就是说最终要使用的FPGA器件的I/O数量是一定要满足要求的。但是,在划分的几个模块中,它们之间也许不仅有需要分配给实际I/O的信号,更多的是与内部其他模块间相互通信的信号。这些信号在独立的模块中,独立的设计编译中,他们总的IO数量很可能超出所选用FPGA器件的I/O数量,因此导致编译报错。另外,有时我们也会对一些IP核做测试,而这个测试只是简单的把这个IP核的所有接口都引出来,有时我们所需要使用的器件的I/O数量不够用,也会导致编译报错。怎么办?

    Quartus II的Virtual Pin就能解决这些问题。想必说到这里,大伙也明白了这个Virtual Pin做什么用了。对,它就是要把工程里定义的I/O不作为需要连接到器件I/O上的I/O。

    那么这个功能如何使用呢?很简单,图1中Flow Summary里对应的工程现在使用了可用104个I/O的55个,我们添加100个名为test_pin的output I/O,直接编译肯定报错。在Quartus II的Tcl Console中输入以下tcl命令:

set_instance_assignment –name VIRTUAL_PIN ON –to test_pin

    然后重新编译,得到如图2所示的Flow Summary。使用了100个virtual pins。正是前面所添加的test_pin。

    如果需要取消这个virtual pins设置,那么输入tcl命令:

set_instance_assignment –name VIRTUAL_PIN OFF –to test_pin

    这个语法是固定的,对于不同的需要设置virtual pins的管脚,只要替代前面的test_pin名字即可