1. 系统调试工具概述
2. 使用System Console分析和调试设计
3. 调试收发器链路
4. 使用Signal Probe的快速设计调试
5. 使用Signal Tap逻辑分析仪进行设计调试
6. 使用外部逻辑分析器进行在系统调试(In-System Debugging Using External Logic Analyzers)
7. 存储器和常量的在系统修改(In-System Modification of Memory and Constants)
8. 使用In-System Sources and Probes进行设计调试
A. Intel® Quartus® Prime Standard Edition用户指南
2.1. System Console简介
2.2. System Console调试流程
2.3. 与System Console交互的IP内核
2.4. 启动System Console
2.5. System Console GUI
2.6. System Console命令
2.7. 在命令行模式下运行System Console
2.8. System Console服务
2.9. 使用工具包
2.10. ADC Toolkit
2.11. System Console示例和教程
2.12. 板载 Intel® FPGA Download Cable II支持
2.13. 系统验证流程中的MATLAB*和Simulink*
2.14. 不推荐使用的命令
2.15. 使用System Console分析和调试设计修订历史
2.9.6.4.1. toolkit_register
2.9.6.4.2. toolkit_open
2.9.6.4.3. get_quartus_ini
2.9.6.4.4. toolkit_get_context
2.9.6.4.5. toolkit_get_types
2.9.6.4.6. toolkit_get_properties
2.9.6.4.7. toolkit_add
2.9.6.4.8. toolkit_get_property
2.9.6.4.9. toolkit_set_property
2.9.6.4.10. toolkit_remove
2.9.6.4.11. toolkit_get_widget_dimensions
2.9.6.5.1. 小部件类型和属性
2.9.6.5.2. barChart属性
2.9.6.5.3. 按钮属性
2.9.6.5.4. checkBox属性
2.9.6.5.5. comboBox属性
2.9.6.5.6. 表盘属性(dial Properties)
2.9.6.5.7. fileChooserButton属性
2.9.6.5.8. group属性
2.9.6.5.9. label属性
2.9.6.5.10. led属性
2.9.6.5.11. lineChart属性
2.9.6.5.12. list属性
2.9.6.5.13. pieChart属性
2.9.6.5.14. table属性
2.9.6.5.15. text属性
2.9.6.5.16. textField Properties
2.9.6.5.17. timeChart Properties
2.9.6.5.18. xyChart属性
4.2.1. 生成一个Signal Probe管脚
4.2.2. 删除一个Signal Probe管脚
4.2.3. 使能一个Signal Probe管脚
4.2.4. 禁用一个Signal Probe管脚
4.2.5. 执行一个Signal Probe编译
4.2.6. 保留Signal Probe管脚
4.2.7. 添加Signal Probe源
4.2.8. 分配I/O标准
4.2.9. 添加寄存器用于流水线(pipelining)
4.2.10. 完整编译后立即运行Signal Probe
4.2.11. 手动运行Signal Probe
4.2.12. 使能或禁用所有Signal Probe布线
4.2.13. 允许Signal Probe修改Fitting结果
5.1. Signal Tap逻辑分析仪
5.2. Signal Tap Logic Analyzer任务流程概述
5.3. 配置Signal Tap Logic Analyzer
5.4. 定义触发器
5.5. 编译设计
5.6. 对目标器件或者器件编程
5.7. 运行Signal Tap Logic Analyzer
5.8. 查看,分析和使用采集的数据
5.9. 其他功能
5.10. 设计实例:使用Signal Tap Logic Analyzers
5.11. 自定义触发流程应用示例
5.12. Signal Tap脚本支持
5.13. 使用Signal Tap Logic Analyzer进行设计调试修订历史
8.5. In-System Sources and Probes Editor的Tcl界面
为了支持自动化,In-System Sources and Probes Editor以Tcl命令的形式支持本章中描述的过程步骤。运行quartus_stp时,默认包含In-System Sources and Probes Editor的Tcl package。
In-System Sources and Probes Editor的Tcl界面提供了一个设计调试的强大平台。Tcl界面 对于调试需要切换多组控制输入的设计特别有用。您可以将多个命令与Tcl脚本结合使用以定义一个定制命令集。
命令 | 参数 | 描述 |
---|---|---|
start_insystem_source_probe | -device_name <device name> -hardware_name <hardware name> | 打开一个包含指定硬件的器件的句柄。 在开始任何传输之前,请调用此命令。 |
get_insystem_source_ probe_instance_info | -device_name <device name> -hardware_name <hardware name> | 返回设计中的所有ALTSOURCE_PROBE实例。返回的每个记录均采用以下格式: {<instance Index>, <source width>, <probe width>, <instance name>} |
read_probe_data | -instance_index <instance_index> -value_in_hex (optional) | 检索探针的当前值。 返回一个字符串,该字符串指定每个探针的状态,其中MSB为最左边的位。 |
read_source_data | -instance_index <instance_index> -value_in_hex (optional) | 检索源的当前值。 返回一个字符串,该字符串指定每个源的状态,其中MSB为最左边的位。 |
write_source_data | -instance_index <instance_index> -value <value> -value_in_hex (optional) | 设置来源的值。 一个二进制字符串被发送到源端口,其中MSB作为最左边的位。 |
end_insystem_source_probe | None | 释放JTAG链。 所有传输完成后,发出此命令。 |
该示例显示了Tcl脚本的摘录,其中包含控制设计的ALTSOURCE_PROBE实例的过程,如下图所示。该示例设计包含一个具有ALTSOURCE_PROBE实例的DCFIFO,以读取和写入DCFIFO。在设计中添加了一组控制复用器,以控制输入管脚和ALTSOURCE_PROBE实例之间的DCFIFO数据流。脉冲发生器被添加到读取请求和写入请求控制行,以确保对单个样本进行读取或写入。在下面的示例中与脚本一起使用时,ALTSOURCE_PROBE实例通过执行单个样本写入和读取操作并报告满和空状态标志(full and empty status flags)的状态,从而提供对FIFO内容的可见性。
在调试情况下使用Tcl脚本可以清空或预加载设计中的FIFO。例如,您可以使用此功能预加载FIFO,以匹配Signal Tap Logic Analyzer中设置的触发条件。
图 102. 由Tcl脚本控制的DCFIFO示例设计
## Setup USB hardware - assumes only USB Blaster is installed and ## an FPGA is the only device in the JTAG chain set usb [lindex [get_hardware_names] 0] set device_name [lindex [get_device_names -hardware_name $usb] 0] ## write procedure : argument value is integer proc write {value} { global device_name usb variable full start_insystem_source_probe -device_name $device_name -hardware_name $usb #read full flag set full [read_probe_data -instance_index 0] if {$full == 1} {end_insystem_source_probe return "Write Buffer Full" } ##toggle select line, drive value onto port, toggle enable ##bits 7:0 of instance 0 is S_data[7:0]; bit 8 = S_write_req; ##bit 9 = Source_write_sel ##int2bits is custom procedure that returns a bitstring from an integer ## argument write_source_data -instance_index 0 -value /[int2bits [expr 0x200 | $value]] write_source_data -instance_index 0 -value [int2bits [expr 0x300 | $value]] ##clear transaction write_source_data -instance_index 0 -value 0 end_insystem_source_probe } proc read {} { global device_name usb variable empty start_insystem_source_probe -device_name $device_name -hardware_name $usb ##read empty flag : probe port[7:0] reads FIFO output; bit 8 reads empty_flag set empty [read_probe_data -instance_index 1] if {[regexp {1........} $empty]} { end_insystem_source_probe return "FIFO empty" } ## toggle select line for read transaction ## Source_read_sel = bit 0; s_read_reg = bit 1 ## pulse read enable on DC FIFO write_source_data -instance_index 1 -value 0x1 -value_in_hex write_source_data -instance_index 1 -value 0x3 -value_in_hex set x [read_probe_data -instance_index 1 ] end_insystem_source_probe return $x }