# TranscendentFunctions **Repository Path**: resfzdfdz/TranscendentFunctions ## Basic Information - **Project Name**: TranscendentFunctions - **Description**: Transcendent Functions - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-09-12 - **Last Updated**: 2021-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TMU单元RTL代码与modelsim仿真平台 ## 1.设计相关 本分支包含5个功能模块: + 浮点除法$a=b/c$,对应设计文件tmu_divf32.sv + 浮点平方根,$a=\sqrt{b}$,对应设计文件tmu_sqrtf32.sv + 浮点正弦和余弦,$a=sin(2\pi b)$,$a=cos(2\pi b)$,对应设计文件tmu_sin_cos.sv + 浮点反正切,$a=\frac{1}{2\pi}arctan(b)$,对应设计文件tmu_atanpuf32.sv + 浮点求象限,对应设计文件tmu_quadf32.sv 各模块使用的算法可见doc/Hardware_Algorithm.pdf ## 2.仿真相关 仿真平台需要3个组件: + modelsim10.4版本:更低或更高版本可能也能跑通,但也可能出现未知的问题,我所使用的modelsim可在(链接:https://pan.baidu.com/s/1lgFgWbIaADmvChYAmVVQsw ,提取码:9o6k )找到。 + cmd命令行:windows系统自带cmd命令行 + gcc:该组件不是必要组件,只是用于产生测试向量test_pattern.txt的,在xxx/C/目录下有一个*.exe的文件,它是已经编译好的二进制文件,在命令行中传递相应参数即可生成测试向量文件。注意:gcc也可在cmd命令行中执行,只需下载安装gcc,并将gcc.exe文件的路径设置在环境变量path中,即可在cmd中调用gcc(用IDE编译也可,但IDE编译会生成一大堆项目工程文件,属实麻烦) 仿真平台的原理: 该仿真平台的原理较简单,首先执行二进制文件生成测试向量test_pattern.txt,随后调用modelsim进行仿真,读取测试向量test_pattern.txt并进行结果对比,将仿真结果打印在modelsim的输出文件中,将波形记录在vsim.wlf文件中。仿真结束后,再调用modelsim查看波形。 bat文件: bat文件为cmd命令行脚本,双击它会自动打开cmd,并一行一行的执行其中的命令。在bat脚本中,set语法可用于设置变量值,del语法可删除文件,path用于设置环境变量,rem用于注释,pause用于暂停。其他语法可自行百度。 do文件: do文件为modelsim的脚本文件,vsim通过调用一行一行的执行do文件进行仿真。do文件的各语法也可在网上找到。其主要步骤为vlib建库,vlog编译RTL代码和testbench,vsim仿真,add wave添加波形,run执行仿真。不同版本的modelsim可能do文件的语法稍有差异,这可能导致仿真无法跑通。 ## 3.所有文件 div,sqrt,atan,sin_cos,quad五个文件夹中为设计与仿真平台。其中每个文件夹中包含: + C文件夹:其中含有生成测试向量的源代码.c文件和已编译好的二进制文件*.exe,如果二进制文件无法执行,就需要用gcc重新编译一个二进制文件。 + auto_sim.bat:双击即可进行自动仿真 + auto_sim.do:RTL代码的编译与仿真选项都在这个文件中 + del.bat:删除仿真过程中产生的临时文件 + tb_tmu_xxxxxx_2.sv:这是testbench,可读取test_pattern.txt文件作为激励,并将结果与test_pattern.txt中的软件参考结果进行对比。 + tmu_xxxxxx.sv:这是设计文件,为相应模块的RTL代码 + view_wave.bat:仿真结束后点击该文件可查看波形 + wave.do:看波形时添加波形的设置。注意:在auto_sim.do文件中没有添加的波形,在wave.do中是无法查看的。