Tri_integral Summer Training 9 总结

SummerTraining9比赛回顾
本文回顾了一场名为SummerTraining9的比赛经历,队伍成功解决了多个问题,包括一个简单的开始问题(I)、涉及tarjan算法的问题(H)、使用线段树解决的问题(J)等。尽管遇到了一些挑战,如数据错误和实现陷阱,但团队最终还是取得了不错的成绩。

比赛链接

A

B

C

D

G

H

I

J

K

多灾多难的 Summer Training 9,前一天挂了一场比赛,结果题一半不能做,于是打了一个小时就放弃了。之后的两场 Summer Training 9一场题挂错,一场看上去很靠谱但数据似乎出了问题交上去都是wa。最后的summer training 9是拉丁美洲的一场比赛,题目质量不错,区分度明显。

我开场发现I是个水题,于是就去敲。期间Moor和ss讨论了A题,觉得可敲,而其它读过了的题似乎比较神的样子。我各种手贱,晕晕乎乎的敲玩之后发现过不了样例,折腾了好久才知道是gets的时候读空字符了。第一次交RE,是很二的数组开小了,第二次PE,在行尾加空格了,这个问题在敲的时候就已经想到了,最后忘了改。ss对我表示绝望,第三次忘了吧freopen注释,WA了,第四次终于过了。对不起大家。

Moor去敲A题,我读过了很多的K题。很快A就敲好了,1A,大约用了15分钟。大概是想赎罪,我敲K题,敲玩测样例之后发现漏了中情况,庆幸给了很多组数据,然后就1A了,大约花了13分钟。

期间Moor和ss讨论了H题,是个不难的tarjan,于是Moor敲H题。大概敲了15分钟,1A。

此时场上剩下的题只有B和J有人过,B想了好久都不会,ss去读J题,发现是个线段树,然后就1A了。

接下来的半个多小时就是各种不会以及读题训练,BCDEG换着看。Moor一直在想C题,并发表了“想C想的要疯掉的言论”,虽然我和ss一点都没看出来。黄天不负有心人,Moor终于知道了C的做法,敲玩之后发现第三个样例不过,发现是方法优雅过头出错了,只好换更暴力的做法,然后就很神奇的1A了。接下来的两个小时又是各种不会和读题。ss甚至想暴力搞搞D,敲了点及放弃了。Moor对B有了想法,于是去敲,很艰难的走出几个坑过了样例交,结果SE了。只好到uva上交,结果WA了。修修补补再交,在uva上A了,不过在比赛上是se。

期间觉得D可以用trie树做。但一直没有i想到如何合并两颗树。

然后比赛就结束了。

ss赛后过了D,真的是trie树。

set_property PACKAGE_PIN V4 [get_ports {led_tri_o[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[0]}] set_property PACKAGE_PIN U6 [get_ports {led_tri_o[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[1]}] set_property PACKAGE_PIN U5 [get_ports {led_tri_o[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[2]}] set_property PACKAGE_PIN V7 [get_ports {led_tri_o[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[3]}] set_property PACKAGE_PIN W7 [get_ports {led_tri_o[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[4]}] set_property PACKAGE_PIN W6 [get_ports {led_tri_o[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[5]}] set_property PACKAGE_PIN W5 [get_ports {led_tri_o[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_tri_o[7]}] set_property PACKAGE_PIN U7 [get_ports {led_tri_o[7]}] set_property PACKAGE_PIN AB6 [get_ports {sw_tri_i[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[0]}] set_property PACKAGE_PIN Y4 [get_ports {sw_tri_i[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[1]}] set_property PACKAGE_PIN AA4 [get_ports {sw_tri_i[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[2]}] set_property PACKAGE_PIN R6 [get_ports {sw_tri_i[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[3]}] set_property PACKAGE_PIN T6 [get_ports {sw_tri_i[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[4]}] set_property PACKAGE_PIN T4 [get_ports {sw_tri_i[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[5]}] set_property PACKAGE_PIN U4 [get_ports {sw_tri_i[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[6]}] set_property PACKAGE_PIN V5 [get_ports {sw_tri_i[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {sw_tri_i[7]}]所以这个要怎么改
最新发布
09-25
# 代码分析与修改建议 ## 代码概述 你提供的是 Xilinx Vivado 工具中用于约束 FPGA 引脚分配和电平标准的 TCL 脚本。其目的是将设计中的输入输出端口(如 `sw_tri_i[7:0]` 和 `led_tri_o[7:0]`)绑定到具体的物理引脚并设置 I/O 标准。 当前脚本已基本正确配置所有 16 个端口,但存在一个关键问题:**大小写不一致导致端口匹配失败**。 --- ## 代码解析 观察你的原始报错信息: > Problem ports: SW_tri_i[7:0], LED_tri_o[7:0] 注意:报错中提到的端口名为 `SW_tri_i` 和 `LED_tri_o` —— 使用的是大写字母开头。 而你在 TCL 脚本中写的是: ```tcl [get_ports {sw_tri_i[0]}] ← 小写 sw_tri_i [get_ports {led_tri_o[0]}] ← 小写 led_tri_o ``` Vivado 中的 `get_ports` 命令默认是**区分大小写的**。如果你的顶层模块定义的端口是 `SW_tri_i`,但你在约束中查找 `sw_tri_i`,则无法找到对应端口,导致约束未生效,仍然报错。 --- ### ✅ 正确做法:统一端口名称大小写 你需要将脚本中的端口名改为与设计中完全一致的形式。假设你的 HDL 模块(Verilog/VHDL)中声明的是: ```verilog input wire [7:0] SW_tri_i, output wire [7:0] LED_tri_o ``` 那么在 XDC/TCL 约束中也应使用相同命名: ```tcl set_property PACKAGE_PIN AB6 [get_ports {SW_tri_i[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[0]}] set_property PACKAGE_PIN Y4 [get_ports {SW_tri_i[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[1]}] set_property PACKAGE_PIN AA4 [get_ports {SW_tri_i[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[2]}] set_property PACKAGE_PIN R6 [get_ports {SW_tri_i[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[3]}] set_property PACKAGE_PIN T6 [get_ports {SW_tri_i[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[4]}] set_property PACKAGE_PIN T4 [get_ports {SW_tri_i[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[5]}] set_property PACKAGE_PIN U4 [get_ports {SW_tri_i[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[6]}] set_property PACKAGE_PIN V5 [get_ports {SW_tri_i[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {SW_tri_i[7]}] set_property PACKAGE_PIN V4 [get_ports {LED_tri_o[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[0]}] set_property PACKAGE_PIN U6 [get_ports {LED_tri_o[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[1]}] set_property PACKAGE_PIN U5 [get_ports {LED_tri_o[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[2]}] set_property PACKAGE_PIN V7 [get_ports {LED_tri_o[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[3]}] set_property PACKAGE_PIN W7 [get_ports {LED_tri_o[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[4]}] set_property PACKAGE_PIN W6 [get_ports {LED_tri_o[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[5]}] set_property PACKAGE_PIN W5 [get_ports {LED_tri_o[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[6]}] set_property PACKAGE_PIN U7 [get_ports {LED_tri_o[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_tri_o[7]}] ``` > 🔍 注意:所有端口名从 `sw_tri_i` / `led_tri_o` 改为 `SW_tri_i` / `LED_tri_o`(首字母大写)。 --- ### 💡 补充说明:关于 `LVCMOS33` 写法 - `LVCMOS33` 是合法写法,等价于 `LVCMOS3.3`(Vivado 自动识别)。 - 推荐使用标准格式 `LVCMOS3.3` 提高可读性: ```tcl set_property IOSTANDARD LVCMOS3.3 [get_ports {SW_tri_i[0]}] ``` --- ## 知识点(列出该代码中遇到的知识点) 1. **TCL 脚本中的大小写敏感性** Vivado 的 `get_ports` 默认区分大小写,名称不匹配会导致约束失效。 2. **XDC 引脚约束语法** 使用 `set_property PACKAGE_PIN xxx [get_ports {...}]` 绑定逻辑端口到物理引脚。 3. **IOSTANDARD 设置规范** 必须为每个 I/O 端口指定电平标准(如 LVCMOS3.3),避免电气不兼容风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值