Files
TBgen_App/__pycache__/run_tbgen.cpython-312.pyc

107 lines
5.5 KiB
Plaintext
Raw Normal View History

2026-03-30 16:46:48 +08:00
<EFBFBD>
<00>(<28>i<00><00><><00>dZddlZddlZddlmZee<05>j Zejjde
e<07><00>ddl m Z ddl mZddlZGd<06>d<07>Z dd <09>Zed
k(r`d Zd Zd Zed<0E>eeeedd<08><10>\ZZede<18><00><02>edej5dd<01><00><00><02>edej5dd<16><00><00><02>yy)u<>
TB Generator - 根据DUT和项目要求生成Testbench完整版
支持多阶段流程: TBgen → TBsim → TBcheck → CGA → TBeval
用法:
from run_tbgen import generate_tb
tb_path, result = generate_tb(
dut_code="module example(...); endmodule",
description="项目描述",
header="module example(input clk, ...);",
task_id="my_task",
model="qwen-max"
)
<EFBFBD>N)<01>Path)<01> AutoLine_Task)<01>Configc<00>*<00>eZdZdZdd<02>Z dd<03>Zd<04>Zy)<08> TBGeneratoru,完整的TB生成器支持多阶段流程c<00> <00>||_||_y)N)<02> api_key_path<74>model)<03>selfr r
s <20>//home/zhang/CorrectBench/TBgen_App/run_tbgen.py<70>__init__zTBGenerator.__init__s<00><00>(<28><04><19><1A><04>
<EFBFBD>c <00><><00>|d|||dggd<03>}|j|||<06>}t||<08>} | j<00>| j| j| j
| j | jd<04>S)u<>
生成Testbench完整流程
参数:
dut_code: str, DUT的Verilog代码
description: str, 项目描述/需求
header: str, DUT的module header
task_id: str, 任务ID
enable_cga: bool, 是否启用CGA优化
cga_iter: int, CGA最大迭代次数
返回:
dict: 包含TB代码、评估结果等
<20>N)<08>task_id<69> task_number<65> description<6F>header<65> module_code<64> testbench<63>mutants<74>
llmgen_RTL)<05> TB_code_v<5F>
TB_code_py<EFBFBD>run_info<66> cga_coverage<67> full_pass)<08>_create_configr<00>runrrrrr)
r <00>dut_coderrr<00>
enable_cga<EFBFBD>cga_iter<65> prob_data<74>config<69>tasks
r <00>generatezTBGenerator.generate#s<><00><00>$<1F><1C>&<26><1C>#<23><1D><19><1C> 
<EFBFBD> <09><16>$<24>$<24>W<EFBFBD>j<EFBFBD>(<28>C<><06><1D>Y<EFBFBD><06>/<2F><04> <0C><08><08>
<EFBFBD><1E><1E><1E><1E>/<2F>/<2F><1C> <0A> <0A> <20>-<2D>-<2D><1D><1E><1E> 
<EFBFBD>
rc <00>l<00>tjjtdd<02>}d|j<00>d|j
<00>dtjjtd|<01><00>d|<02>d|<03>d <09> }t |d
<EFBFBD>5}|j|<05>d d d <0B>t|<04>S#1swYt|<04>SxYw) u创建运行配置r$z custom.yamlz,
run:
mode: 'autoline'
gpt:
model: "z"
key_path: "z "
save:
en: True
root: "<22>outputz'/"
autoline:
cga:
enabled: z
max_iter: z;
promptscript: "pychecker"
onlyrun: "TBgensimeval"
<EFBFBD>wN) <09>os<6F>path<74>join<69> PROJECT_ROOTr
r <00>open<65>writer)r rr!r"<00> config_path<74>config_content<6E>fs r rzTBGenerator._create_configNs<><00><00><19>g<EFBFBD>g<EFBFBD>l<EFBFBD>l<EFBFBD><<3C><18>=<3D>I<> <0B> <0A><12>Z<EFBFBD>Z<EFBFBD>L<EFBFBD><10><14>!<21>!<21>"<22># <0C> <0F>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1C>x<EFBFBD><17> 9<> :<3A>;<12><1D><1C><13><1B>*<2A><01><04><0E> <12>+<2B>s<EFBFBD> #<23> $<24>q<EFBFBD> <0A>G<EFBFBD>G<EFBFBD>N<EFBFBD> #<23> $<24><16>k<EFBFBD>"<22>"<22> $<24><16>k<EFBFBD>"<22>"<22>s <00>;B <03> B3N)<02>config/key_API.json<6F>qwen-max)<03>testT<74>
)<07>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r r&r<00>rr rrs<00><00>6<><1B>?E<01>+-<2D>)
<EFBFBD>V#rrr4c<00><><00>t||<05>}|j|||||<06>} tj|d<01><02>tjj ||<03>d<03><02>}
t j| d|
<EFBFBD>|
| fS)u<>
便捷函数生成TB并保存
参数:
dut_code: str, DUT代码
description: str, 项目描述
header: str, module header
task_id: str, 任务ID
api_key_path: str, API密钥路径
model: str, 使用的模型
enable_cga: bool, 是否启用CGA
output_dir: str, 输出目录
返回:
tuple: (TB文件路径, 结果字典)
T)<01>exist_okz_tb.vr)rr&r*<00>makedirsr+r,<00>ls<6C> save_code) r rrrr r
r!<00>
output_dir<EFBFBD> generator<6F>result<6C>tb_paths r <00> generate_tbrEisn<00><00>*<1C>L<EFBFBD>%<25>0<>I<EFBFBD> <16> <1F> <1F><08>+<2B>v<EFBFBD>w<EFBFBD>
<EFBFBD> S<>F<EFBFBD><06>K<EFBFBD>K<EFBFBD>
<EFBFBD>T<EFBFBD>*<2A><10>g<EFBFBD>g<EFBFBD>l<EFBFBD>l<EFBFBD>:<3A>'<27><19>%<25>'8<>9<>G<EFBFBD><06>L<EFBFBD>L<EFBFBD><16> <0B>$<24>g<EFBFBD>.<2E> <12>F<EFBFBD>?<3F>r<00>__main__z<5F>
module example(
input clk,
input rst,
input [7:0] a,
input [7:0] b,
output [15:0] y
);
assign y = a * b;
endmodule
uF一个8位乘法器输入两个8位无符号数输出16位乘积zTmodule example(input clk, input rst, input [7:0] a, input [7:0] b, output [15:0] y);z'Generating TB for example multiplier...<2E> example_mul)r rrrr
z TB saved to: z
Coverage: rz Full Pass: rF)r3r4Tz./output)r:r*<00>sys<79>pathlibr<00>__file__<5F>parentr-r+<00>insert<72>str<74>autoline.TB_autolinerr$r<00> loader_saverr?rrEr7<00> example_dut<75> example_desc<73>example_header<65>printrDrC<00>getr;rr <00><module>rUs<><00><01> <04>
<EFBFBD>
<EFBFBD><18><14>H<EFBFBD>~<7E>$<24>$<24> <0C><03><08><08><0F><0F><01>3<EFBFBD>|<7C>$<24>%<25>.<2E><19><19>J#<23>J#<23>\3<> <20><1F>%<25> <1B>> <0C>z<EFBFBD><19>
<04>K<EFBFBD>\<01>L<EFBFBD>k<>N<EFBFBD> <09>
3<EFBFBD>4<>!<21><1C> <20><1D><1D><18> <06>O<EFBFBD>G<EFBFBD>V<EFBFBD>
<EFBFBD>M<EFBFBD>'<27><19>
#<23>$<24> <09>J<EFBFBD>v<EFBFBD>z<EFBFBD>z<EFBFBD>.<2E>!<21>4<>5<>
6<EFBFBD>7<> <09>K<EFBFBD><06>
<EFBFBD>
<EFBFBD>;<3B><05>6<>7<>
8<EFBFBD>9<>9r