算法模板01
快速排序
思想:分治
确定分界点:q[l]/ q[(l+r)/2] /q[r] /随机
==(难点)==调整区间:≤x x ≥x
递归处理左右两段
暴力做法:
设置a[],b[]
对于q[l~r]:
q[i]≤x,x->a[]
q[i]≥x,x->b[]
a[]->q[],b[]->q[]
优美做法:
设置双指针l,r
i往右移动,直到看到≥x的数
j往左移动,直到看到≤x的数
swap(i,j)
循环,直到i,j相遇
12345678910111213void quick_sort(int q[],int l,int r){ if(l>=r) return;//判边界,如果只有一个数/没有数直接返回 int i=l-1,j=r+1,x=q[l]; while(i<j) { do i++;while(q[i]<x); do j--;while(q[j]>x); ...
Typora使用笔记
标题##这是二级标题
ctrl+数字,数字是几就对应几级标题
数字为0变成普通文本
ctrl+"+"/"-"字体变大/变小
这是五级标题段落换行/分段这是第一段 shift+enter
第一段的第二行 enter
这是第二段
这是第一段第一段的第二行
这是第二段
分割线---
文字显示加粗**加粗**
我是加粗
删除线alt+shift+5
我是删除线
下划线ctrl+u
我是下划线
斜体ctrl+I
*斜体*
我是斜体
高亮==高亮==
==我是高亮==
拓展:1\*2\*3……
1*2*3……
也就是要想“*”显示出来,应该加上\正斜线符号
1\\*2\\*3……
1\2\3……
也就是既要显示\,又要显示*,在前面再加一个“\”即可
上下标x^2^
x^2^
H~2~O
H2O
拓展:x~1~1^2^
x1^2^
上下标的局限性
列表无序列表* 列表
+ 列表
- 列表
enter+enter 推出:按两次enter键即可
列表
退出:按两次enter键即可
子集类在上一节的基础上,换行
tab ...
verilog_grammar
语言要素命名规则标识符用来命名信号、模块、参数等,可以是一组字母、数字、$符号和下划线的组合
注释单行注释以“//”开始
多行注释从“/”开始,到“/”结束
多行注释不能嵌套,单行注释可以嵌套在多行注释中
verilog中的关键字用小写
and
always
assign
beign
buf
bufif0
bufif1
case
casex
casez
cmos
deassign
default
defparam
disable
edge
else
end
endcase
endfunction
endprimitive
endmodule
endspecify
endtable
endtask
event
for
force
forever
fork
function
highz0
highz1
if
ifnone
initial
inout
input
integer
join
large
macromodule
medium
module
nand
negedge
nor
not
notif0
n ...
SVA-GRAMMAR
1
SVA的位置在.v文件中
module ABC();
rtl代码
SVA断言
end mudule
断言的格式
断言1
assert property(事件1)
$display("......",$time);
else
$display(".......",$time);
断言2
assert property(事件2)
$display("......",$time);
else
$display(".......",$time);
含义:断定”事件1”和“事件2”会发生,如果发生了,记作pass,否则记作fail
事件1和事件2的两种书写格式
序列块
sequence name;//常用于组合逻辑断言
...
endsequence
属性块
property name;//常用于有时间观念的断言,可用于调用sequence
...;
endproperty
调用sequence或者property
assert property(name)
带参数的property,sequrnce
assert property(p1(a,b))//调用的 ...
daily_plan
1
读书,学习1h
英语单词×200
keep×5
文献2h
假期安排
edb402531f380c4f1fffb7ae50792be346df921b02b697fca97472971661d1a36f28ec5e055f85f2b41fb96a539d8054bb03150b7ee9f03b03bcbd4624beaffbeaebe049fe73284533ea989cefecea5c4e767926310da15c32367bfbbdf6f9cc5b15b0b0fdff42d4dd058c27a5fae6666ef61ee2a88d5ce1a6e9f4a386919217cde91eff9cbb58a075be92d1a275a2f3d5629d90d362be847819c6dd094cf76bd62e5f73e52dc7803afa37953ddc09300c2abb7683f6e8bf773b4cec590960eeda418395aa185755c45c7fdbca5ecd1f98cd0e9b31c785ec63db6bbfc4996b1c4182e8295875fc3d18875295f52680ff5600106d43d619f3f ...
note
一、引言 3背景介绍:在硬件设计领域,确保设计的正确性至关重要,而形式属性验证(FPV)是保证硬件设计质量的关键方法。 然而,编写用于验证的断言(如 SVA)是一项具有挑战性的工作,传统的方法存在一些局限性,需要不断改进和创新。 就像我们盖房子需要确保房子质量,而传统的检查方式不够完善,需要寻找更好的检查手段,这就引出了新的研究和工具的需求。
==摘要==形式属性验证(FPV)已经存在了数十年,并且已被证明能有效地发现复杂的寄存器传输级(RTL)错误。然而,诸如用 SystemVerilog 断言(SVA)编写的形式属性,即便对于有经验的用户来说,编写起来也既耗时又容易出错。先前的工作试图通过提高抽象层次来减轻这一负担,以便从高级规范生成 SVA。然而,这并不能消除对详细硬件行为进行推理和编写描述的人工工作。受异构硬件时代对 FPV 需求的增长以及大型语言模型(LLMs)进步的推动,我们开始探索 ==LLMs 是否能够捕捉 RTL 行为并生成正确的 SVA 属性==。首先,我们设计了一个基于 FPV 的 ...
RTL,FT,SUV,FPV之间的关系
RTL,FT,SUV,FPVRTL(Register Transfer Level):它是硬件设计过程中的一个关键层次,就像是盖房子的详细**==蓝图==**。你可以把它想象成一个详细的建筑设计图,用硬件描述语言(如 Verilog 或 VHDL)来描述硬件系统中的寄存器如何存储和传输数据,以及它们之间的逻辑关系和操作。它详细地说明了硬件的功能和结构,是实现硬件的基础,告诉硬件工程师如何把一个硬件系统给设计出来。
SVA(SystemVerilog Assertions):SVA 是一种专门的语言,类似于一份份检查==清单==。想象一下,你盖房子的时候会有一些要求,比如 “窗户必须能正常开关”“地板要能承受一定的重量”,SVA 就是用来描述硬件系统应该具备哪些行为和属性的语言。它可以规定信号在特定条件下应该是什么状态,或者某些操作必须遵循怎样的顺序,是用来对硬件设计的预期行为进行描述和约束的。
FT(Formal Property Verification Testbench):FT 是一个测试平台,就好比 ...
CCC
ccc
2022正方形泳池123456给定一个N×N的方格矩阵。左上角方格坐标为 (1,1),右下角方格坐标为 (N,N)。有 T 个方格内有树,这些方格的具体坐标已知。我们希望建立一个正方形的泳池。你的任务是找到一个尽可能大的正方形子矩阵,要求子矩阵内没有包含树的方格。输出满足条件的子矩阵的最大可能边长。
思路:
查找横坐标在这两课树中间的所有树,找到能确定上、下边界的树