Compare commits

...

10 Commits

Author SHA1 Message Date
cd74a089e4 save
Some checks failed
Linux NAPI / Linux 12 (push) Has been cancelled
Linux NAPI / Linux 14 (push) Has been cancelled
Linux NAPI / Linux 16 (push) Has been cancelled
Linux NAPI / Linux 18 (push) Has been cancelled
Linux WASM / Linux 15 (push) Has been cancelled
Linux WASM / Linux 16 (push) Has been cancelled
Linux WASM / Linux 17 (push) Has been cancelled
MacOS NAPI / MacOS 14 (push) Has been cancelled
MacOS NAPI / MacOS 16 (push) Has been cancelled
MacOS NAPI / MacOS 18 (push) Has been cancelled
MacOS WASM / MacOS 15 (push) Has been cancelled
MacOS WASM / MacOS 16 (push) Has been cancelled
MacOS WASM / MacOS 17 (push) Has been cancelled
Windows WASM / Node 16 (push) Has been cancelled
2024-11-30 01:42:31 +08:00
f2324479da save 2024-11-30 00:50:32 +08:00
34dc4a004d 直接读入 wasm binary 进行解析 2024-10-31 19:59:53 +08:00
4e53d54c37 update readme 2024-09-05 15:15:10 +08:00
2eda8afff7 增加对于开头存在 #0 这样例子的解析支持 2024-09-05 15:08:46 +08:00
f10bd6dce6 修复 parameter 的问题 2024-05-13 14:13:57 +08:00
d4f2ec5845 修复 parameter 的问题 2024-05-13 14:05:54 +08:00
60c77630cd 修复 parameter 的问题 2024-05-13 14:05:13 +08:00
a8804d9cc0 完成 的支持 | 优化工具函数 2024-05-13 02:50:45 +08:00
55d5c51f29 simplify build process 2024-02-20 21:01:11 +08:00
255 changed files with 3800429 additions and 2150 deletions

2
.gitignore vendored
View File

@ -1,4 +1,3 @@
/.vscode
/.nyc_output
/node_modules
/package-lock.json
@ -6,3 +5,4 @@
/coverage
/tmp
/vcd_parser.*
/out

17
.vscode/c_cpp_properties.json vendored Normal file
View File

@ -0,0 +1,17 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${EMCC_HOME}/node/14.18.2_64bit/include/node/*"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}

62
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,62 @@
{
"files.associations": {
"*.rmd": "markdown",
"node_api.h": "c",
"typeinfo": "c",
"array": "c",
"atomic": "c",
"bit": "c",
"*.tcc": "c",
"bitset": "c",
"cctype": "c",
"chrono": "c",
"clocale": "c",
"cmath": "c",
"compare": "c",
"concepts": "c",
"condition_variable": "c",
"cstdarg": "c",
"cstddef": "c",
"cstdint": "c",
"cstdio": "c",
"cstdlib": "c",
"cstring": "c",
"ctime": "c",
"cwchar": "c",
"cwctype": "c",
"deque": "c",
"string": "c",
"unordered_map": "c",
"vector": "c",
"exception": "c",
"algorithm": "c",
"functional": "c",
"iterator": "c",
"memory": "c",
"memory_resource": "c",
"numeric": "c",
"optional": "c",
"random": "c",
"ratio": "c",
"string_view": "c",
"system_error": "c",
"tuple": "c",
"type_traits": "c",
"utility": "c",
"initializer_list": "c",
"iosfwd": "c",
"iostream": "c",
"istream": "c",
"limits": "c",
"mutex": "c",
"new": "c",
"numbers": "c",
"ostream": "c",
"semaphore": "c",
"stdexcept": "c",
"stop_token": "c",
"streambuf": "c",
"thread": "c",
"__nullptr": "c"
}
}

View File

@ -1,7 +1,6 @@
.PHONY: wasm all important clean
all: wasm
wasm: out/vcd.wasm
WASM_MAIN = wasm_main.cpp
@ -13,10 +12,6 @@ CPP_FILES = \
vcd_parser.c \
vcd_spans.c \
# this is a list of all C functions we want to publish to javascript
# In the main cpp file, each of these is wrapped in extern "C" {}
# the version here has a prepended underscore
# all lines must have trailing comma
EXPORT_STRING = \
"_execute", \
"_init", \
@ -26,16 +21,6 @@ EXPORT_STRING = \
# warning and error flags
CLANG_WARN_FLAGS = \
-fno-exceptions \
-Wall \
-Wextra \
-Wno-ignored-qualifiers \
-Wundef \
-Werror=return-type \
-Wshadow \
# -Wconversion
# -flto \
# -Wl,--lto-O3 \
CLANG_OTHER_FLAGS = \
-DVCDWASM \
@ -50,15 +35,12 @@ ifdef OPT3
CLANG_O_FLAG = '-O3'
endif
# works however slows down
#-s DISABLE_EXCEPTION_CATCHING=0 \
out/vcd.wasm: $(WASM_MAIN) $(CPP_FILES) $(HPP_FILES) Makefile
wasm: $(WASM_MAIN) $(CPP_FILES) $(HPP_FILES) Makefile
mkdir -p out
emcc \
$(WASM_MAIN) \
$(CPP_FILES) \
-o out/vcd.html \
-o out/vcd.js \
-s DISABLE_EXCEPTION_CATCHING=1 \
-s WASM_BIGINT \
-s ALLOW_MEMORY_GROWTH=1 \
@ -66,48 +48,11 @@ out/vcd.wasm: $(WASM_MAIN) $(CPP_FILES) $(HPP_FILES) Makefile
-s MAXIMUM_MEMORY=2GB \
-s ALLOW_TABLE_GROWTH=1 \
-s MODULARIZE=1 \
-s EXPORT_NAME=createVCD \
-s EXPORTED_FUNCTIONS='[$(EXPORT_STRING) "_main"]' \
-s EXPORTED_RUNTIME_METHODS='["ccall", "cwrap", "addOnPostRun", "addFunction", "setValue", "getValue"]' \
$(CLANG_O_FLAG) $(CLANG_WARN_FLAGS) $(CLANG_OTHER_FLAGS)
# -s WASM=0 \
.PHONY: patchlib patchlib1 patchlib2
# patchlib: patchlib1 patchlib2
# PTSRC1=lib/BehaviorTree.CPP/src/xml_parsing.cpp
# PTPAT1=patch/xml_parsing.patch
# # see https://stackoverflow.com/questions/7394290/how-to-check-return-value-from-the-shell-directive
# PAPPLIED1 := $(shell patch -R -p0 -s -f --dry-run $(PTSRC1) < $(PTPAT1) 1>&2 2> /dev/null > /dev/null; echo $$?)
# # patch is pretty annoying to use here
# # we would like to apply the patch, or skip if already applied exit 0
# # inorder to do this, we first need to run a dry-run in the reverse direction
# # then check the exit code, then run it in the forward direction if actually needed
# # we also have to do the complicated line above to deal with exit codes
# # see https://unix.stackexchange.com/questions/55780/check-if-a-file-or-folder-has-been-patched-already
# patchlib1: $(PTPAT1)
# ifneq ($(PAPPLIED1),0)
# @echo "$(PTSRC1) is unpatched.\n"
# patch --forward --reject-file=- $(PTSRC1) < $(PTPAT1)
# else
# @echo "$(PTSRC1) already patched, skipping..."
# endif
# PTSRC2=lib/BehaviorTree.CPP/src/tree_node.cpp
# PTPAT2=patch/tree_node.patch
# PAPPLIED2 := $(shell patch -R -p0 -s -f --dry-run $(PTSRC2) < $(PTPAT2) 1>&2 2> /dev/null > /dev/null; echo $$?)
# patchlib2: $(PTPAT2)
# ifneq ($(PAPPLIED2),0)
# @echo "$(PTSRC2) is unpatched.\n"
# patch --forward --reject-file=- $(PTSRC2) < $(PTPAT2)
# else
# @echo "$(PTSRC2) already patched, skipping..."
# endif
.PHONY: all build watch dev start test pretest lint jestc copydist cleandist prepare
.PHONY: test testonly

184
README.md
View File

@ -1,85 +1,125 @@
[![Linux NAPI](https://github.com/wavedrom/vcd/actions/workflows/linux-napi.yml/badge.svg)](https://github.com/wavedrom/vcd/actions/workflows/linux-napi.yml)[![Linux WASM](https://github.com/wavedrom/vcd/actions/workflows/linux-wasm.yml/badge.svg)](https://github.com/wavedrom/vcd/actions/workflows/linux-wasm.yml)[![MacOS NAPI](https://github.com/wavedrom/vcd/actions/workflows/macos-napi.yml/badge.svg)](https://github.com/wavedrom/vcd/actions/workflows/macos-napi.yml)[![MacOS WASM](https://github.com/wavedrom/vcd/actions/workflows/macos-wasm.yml/badge.svg)](https://github.com/wavedrom/vcd/actions/workflows/macos-wasm.yml)[![Windows WASM](https://github.com/wavedrom/vcd/actions/workflows/windows-wasm.yml/badge.svg)](https://github.com/wavedrom/vcd/actions/workflows/windows-wasm.yml)
[![NPM version](https://img.shields.io/npm/v/vcd-stream.svg)](https://www.npmjs.org/package/vcd-stream)
基于 [llparse](https://github.com/nodejs/llparse) 的 vcd 解析器,用于 [Digital IDE 的 wave 渲染器](https://github.com/Digital-EDA/digital-vcd-render) 的 vcd 后端解析器构建。
## 准备工作
[安装 emcc](https://kirigaya.cn/blog/article?seq=55)
```bash
git clone https://github.com/Digital-EDA/digital-vcd-parser
cd digital-vcd-parser
npm i
npm install browserify terser node-gyp -g
```
## 构建
```bash
# 激活 emcc
source $EMCC_HOME/emsdk_env.sh
# 生成 vcd_parser.c 和 vcd_parser.h每次修改 ./bin/build.js 都需要重新运行)
# llparse 使用教程https://kirigaya.cn/blog/article?seq=223
node bin/build.js
# build
make -j 12
```
生成 :
- `./out/vcd.js`
- `./out/vcd.wasm`
部署到 digital-vcd-render
```bash
# 将生成的 wasm 通过 浏览器化和特殊处理后部署到 render 项目中
source deploy.sh /mnt/c/Users/11934/Project/Digital-IDE/digital-vcd-render
```
## 测试
快速测试:
```bash
node test/debug/basic.js
```
通用测试:
```bash
npm run test
```
> tip: 不要运行 `browserify` 如果你要进行测试的话
## 浏览器使用
```bash
source deploy.sh /path/to/digital-vcd-render
```
Value Change Dump ([VCD](https://en.wikipedia.org/wiki/Value_change_dump)) parser using [llparse](https://github.com/nodejs/llparse)
## Usage
Install
Only stream of Uint8 is supported as input. e.g. we want to parse a certain `*.vcd` read in browser-like environment. Mount vcd to window in your `index.html`:
```
npm i vcd-stream
make wasm
```html
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link rel="stylesheet" href="./vcd.css">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<script src="./vcd.js"></script>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
</body>
</html>
```
Require
In your main workspace (`App.vue` for example), goes like this:
```js
let vcd = require('vcd-stream');
```javascript
const uint8array = await readVcdFile();
const vcdstream = await getVcdStream();
// level size diagram data
const values = {};
vcdstream.change.any((id, time, cmd, value, mask) => {
if (values[id] === undefined) {
values[id] = [];
}
values[id].push({time, cmd, value, mask});
})
const maxChunkLength = 1 << 17;
for (let i = 0; i < uint8array.length; i += maxChunkLength) {
const piece = uint8array.slice(i, i + maxChunkLength);
vcdstream.write(piece);
}
// structure info of wires in vcdstream.info
console.log(vcdstream.info);
```
Create parser writable stream instance
```js
let inst = vcd.parser();
```
General event emitter
```js
inst.on(<eventName>, () => {});
```
Events:
* `$enddefinitions` - when all modules/wires are defined
* `finish` - end of stream
* `error` - error during parsing process
Change event emitter
```js
inst.change.on(<wireName>, (time, cmd) => {});
```
* `time` -- change time
* `cmd` -- change type
Info object
```js
let info = inst.info;
```
* `info.status` - (`'declaration'`|`'simulation'`)
* `info.wires` - hierarchy object of modules and wires
Pipe data into the instance
```js
myStream.pipe(inst);
```
## Test
### Build / Test Napi version
```
npm i
npm run mocha_napi
```
### Build / Test Wasm version
```
make
npm run mocha_wasm
```
### Test all
```
npm test
```
---
## License

67
backup/napi_any.js Normal file

File diff suppressed because one or more lines are too long

138
backup/napi_basic.js Normal file
View File

@ -0,0 +1,138 @@
// 'use strict';
// /* eslint-disable no-console */
// /* eslint-disable indent */
// const expect = require('chai').expect;
// const parser = require('../lib/parser.js');
// describe('basic', () => {
// it('typeof vcd', done => {
// expect(parser).to.be.an('function');
// done();
// });
// it('typeof vcd instance', done => {
// expect(parser()).to.be.an('object');
// done();
// });
// it('fail: foo bar', done => {
// const inst = parser();
// expect(() => {
// inst.write(Buffer.from(' foo bar ???'));
// }).not.to.throw();
// expect(inst.info).to.deep.eq({
// stack: [{}],
// status: 'declaration',
// wires: {}
// });
// done();
// });
// it('fail: $comment', done => {
// const inst = parser();
// expect(() => {
// inst.write(Buffer.from(
// ' \n $comment some text $end $comment more text $end ???'
// ));
// }).not.to.throw();
// expect(inst.info).to.deep.eq({
// comment: ' more text ',
// stack: [{}],
// status: 'declaration',
// wires: {}
// });
// done();
// });
// it('$version', done => {
// const inst = parser();
// expect(inst.write(`
// $version Generated by VerilatedVcd $end
// $date Wed Sep 18 22:59:07 2019
// $end
// $timescale 1ns $end
// $scope module top $end
// $var wire 1 "}G clock $end
// $scope module leaf $end
// $var wire 64 {u counter [63:0] $end
// $upscope $end
// $scope module fruit $end
// $var wire 4 u) point [3:0] $end
// $upscope $end
// $upscope $end
// $enddefinitions $end
// `
// )).to.eq(true);
// expect(inst.write(`
// #1
// 0"}G
// #2
// 1"}G
// #300
// 0"}G
// b1111000000000000 {u
// #301
// b0000111100000000 {u
// #302
// b0000000011110000 {u
// #303
// b0000000000001111 {u
// `
// )).to.eq(true);
// console.log(inst.info);
// expect(inst.info).to.deep.eq({
// status: 'simulation',
// date: ' Wed Sep 18 22:59:07 2019\n ',
// version: ' Generated by VerilatedVcd ',
// timescale: ' 1ns ',
// t0: 1,
// varId: 'u)',
// wires: {
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// stack: [{
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// },
// {
// point: 'u)'
// }]
// });
// done();
// });
// });
// /* eslint-env mocha */

88
backup/napi_dump.js Normal file
View File

@ -0,0 +1,88 @@
// 'use strict';
// const fs = require('fs');
// const path = require('path');
// const expect = require('chai').expect;
// const parser = require('../lib/parser.js');
// const chopper = require('../lib/chopper.js');
// const expectaitions = [
// { id: '"}G', time: 100n, cmd: 14, value: 0n, mask: 0n },
// { id: '"}G', time: 200n, cmd: 15, value: 0n, mask: 0n },
// { id: '{u', time: 200n, cmd: 30, value: 0xf0f0f0f0f0f0f0f0n, mask: 0xff00ff00ff00ff00n },
// { id: '"}G', time: 300n, cmd: 14, value: 0n, mask: 0n },
// { id: '{u', time: 300n, cmd: 30, value: 0xf000000000000000n, mask: 0n },
// { id: 'u)', time: 300n, cmd: 30, value: 0n, mask: 0n },
// { id: '{u', time: 301n, cmd: 30, value: 0x0f00000000000000n, mask: 0n },
// { id: 'u)', time: 301n, cmd: 30, value: 1n, mask: 0n },
// { id: '{u', time: 302n, cmd: 30, value: 0x00f0000000000000n, mask: 0n },
// { id: 'u)', time: 302n, cmd: 30, value: 2n, mask: 0n },
// { id: '{u', time: 303n, cmd: 30, value: 0x000f000000000000n, mask: 0n },
// { id: 'u)', time: 303n, cmd: 30, value: 3n, mask: 0n },
// { id: '{u', time: 304n, cmd: 30, value: 0x0000f00000000000n, mask: 0n },
// { id: 'u)', time: 304n, cmd: 30, value: 4n, mask: 0n },
// { id: '{u', time: 305n, cmd: 30, value: 0x00000f0000000000n, mask: 0n },
// { id: 'u)', time: 305n, cmd: 30, value: 5n, mask: 0n },
// { id: '{u', time: 306n, cmd: 30, value: 0x000000f000000000n, mask: 0n },
// { id: 'u)', time: 306n, cmd: 30, value: 6n, mask: 0n },
// { id: '{u', time: 307n, cmd: 30, value: 0x0000000f00000000n, mask: 0n },
// { id: 'u)', time: 307n, cmd: 30, value: 7n, mask: 0n },
// { id: '{u', time: 308n, cmd: 31, value: 0x00000000f0000000n, mask: 0n },
// { id: 'u)', time: 308n, cmd: 30, value: 8n, mask: 0n },
// { id: '{u', time: 309n, cmd: 30, value: 0x000000000f000000n, mask: 0n },
// { id: 'u)', time: 309n, cmd: 30, value: 9n, mask: 0n },
// { id: '{u', time: 310n, cmd: 30, value: 0x0000000000f00000n, mask: 0n },
// { id: 'u)', time: 310n, cmd: 30, value: 10n, mask: 0n },
// { id: '{u', time: 311n, cmd: 30, value: 0x00000000000f0000n, mask: 0n },
// { id: 'u)', time: 311n, cmd: 30, value: 11n, mask: 0n },
// { id: '{u', time: 312n, cmd: 30, value: 0x000000000000f000n, mask: 0n },
// { id: 'u)', time: 312n, cmd: 30, value: 12n, mask: 0n },
// { id: '{u', time: 313n, cmd: 30, value: 0x0000000000000f00n, mask: 0n },
// { id: 'u)', time: 313n, cmd: 30, value: 13n, mask: 0n },
// { id: '{u', time: 314n, cmd: 30, value: 0x00000000000000f0n, mask: 0n },
// { id: 'u)', time: 314n, cmd: 30, value: 14n, mask: 0n },
// { id: '{u', time: 315n, cmd: 30, value: 0x000000000000000fn, mask: 0n },
// { id: 'u)', time: 315n, cmd: 30, value: 15n, mask: 0n },
// { id: '"}G', time: 316n, cmd: 15, value: 0n, mask: 0n }
// ];
// describe('napi dump', function () {
// it('simple napi', done => {
// fs.readFile(path.join(__dirname, 'dump.vcd'), function (err, src) {
// if (err) {
// throw new Error(err);
// }
// const inst = parser();
// const dump = [];
// ['"}G', '{u', 'u)'] // array of all signal ids
// .map(id =>
// inst.change.on(id, (time, cmd, value, mask) => {
// const row = {
// id,
// time: BigInt(time),
// cmd,
// value,
// mask
// };
// dump.push(row);
// // console.log(row);
// })
// );
// inst.on('finish', () => {
// expect(inst.getTime()).to.eq(316n);
// expect(dump).to.deep.eq(expectaitions);
// done();
// });
// for (const chunk of chopper(src, 100)) {
// // console.log('\u001b[31m[\u001b[0m' + chunk.toString() + '\u001b[31m]\u001b[0m');
// inst.write(chunk);
// }
// inst.end();
// });
// });
// });
// /* eslint-env mocha */

79
backup/napi_events.js Normal file
View File

@ -0,0 +1,79 @@
// 'use strict';
// const expect = require('chai').expect;
// const parser = require('../lib/parser.js');
// describe('events', () => {
// it('$enddefinitions', done => {
// const inst = parser();
// inst.on('$enddefinitions', () => {
// expect(inst.info).to.deep.eq({
// status: 'simulation',
// date: ' Wed Sep 18 22:59:07 2019\n ',
// version: ' Generated by VerilatedVcd ',
// timescale: ' 1ns ',
// varId: 'u)',
// wires: {
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// stack: [{
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// },
// {
// point: 'u)'
// }]
// });
// });
// expect(inst.write(`
// $version Generated by VerilatedVcd $end
// $date Wed Sep 18 22:59:07 2019
// $end
// $timescale 1ns $end
// $scope module top $end
// $var wire 1 "}G clock $end
// $scope module leaf $end
// $var wire 64 {u counter [63:0] $end
// $upscope $end
// $scope module fruit $end
// $var wire 4 u) point [3:0] $end
// $upscope $end
// $upscope $end
// $enddefinitions $end
// `
// )).to.eq(true);
// done();
// });
// });
// /* eslint-env mocha */

72
backup/wasm_any.js Normal file

File diff suppressed because one or more lines are too long

135
backup/wasm_basic.js Normal file
View File

@ -0,0 +1,135 @@
// 'use strict';
// /* eslint-disable no-console */
// /* eslint-disable indent */
// /* eslint-disable no-unused-vars */
// const expect = require('chai').expect;
// const createVCD = require('../out/vcd.js');
// const webVcdParser = require('../lib/web-vcd-parser.js');
// describe('wasm basic', () => {
// it('typeof vcd', async function () {
// const mod = await createVCD();
// expect(mod).to.be.an('object');
// });
// it('typeof vcd instance', async function () {
// const mod = await createVCD();
// const inst = await webVcdParser(mod);
// expect(inst).to.be.an('object');
// });
// it('fail: foo bar', async function () {
// const mod = await createVCD();
// const inst = await webVcdParser(mod);
// expect(inst.write(Buffer.from(' foo bar ???'))).to.eq(true);
// expect(inst.info).to.deep.eq({
// stack: [{}],
// status: 'declaration',
// wires: {}
// });
// });
// it('$comment', async function () {
// const mod = await createVCD();
// const inst = await webVcdParser(mod);
// expect(inst.write(Buffer.from(
// ' \n $comment some text $end $comment more text $end ???'
// ))).to.eq(true);
// expect(inst.info).to.deep.eq({
// comment: ' more text ',
// stack: [{}],
// status: 'declaration',
// wires: {}
// });
// });
// it('$version', async function () {
// const mod = await createVCD();
// const inst = await webVcdParser(mod);
// expect(inst.write(`
// $version Generated by VerilatedVcd $end
// $date Wed Sep 18 22:59:07 2019
// $end
// $timescale 1ns $end
// $scope module top $end
// $var wire 1 "}G clock $end
// $scope module leaf $end
// $var wire 64 {u counter [63:0] $end
// $upscope $end
// $scope module fruit $end
// $var wire 4 u) point [3:0] $end
// $upscope $end
// $upscope $end
// $enddefinitions $end
// `
// )).to.eq(true);
// expect(inst.write(`
// #1
// 0"}G
// #2
// 1"}G
// #300
// 0"}G
// b1111000000000000 {u
// #301
// b0000111100000000 {u
// #302
// b0000000011110000 {u
// #303
// b0000000000001111 {u
// `
// )).to.eq(true);
// expect(inst.info).to.deep.eq({
// status: 'simulation',
// date: ' Wed Sep 18 22:59:07 2019\n ',
// version: ' Generated by VerilatedVcd ',
// timescale: ' 1ns ',
// t0: 1,
// varId: 'u)',
// wires: {
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// stack: [{
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// },
// {
// point: 'u)'
// }]
// });
// });
// });
// /* eslint-env mocha */

98
backup/wasm_dump.js Normal file
View File

@ -0,0 +1,98 @@
// 'use strict';
// /* eslint-disable no-console */
// /* eslint-disable indent */
// /* eslint-disable no-unused-vars */
// const fs = require('fs');
// const path = require('path');
// const expect = require('chai').expect;
// const createVCD = require('../out/vcd.js');
// const webVcdParser = require('../lib/web-vcd-parser.js');
// const chopper = require('../lib/chopper.js');
// const expectaitions = [
// { id: '"}G', time: 100n, cmd: 14, value: undefined, mask: undefined },
// { id: '"}G', time: 200n, cmd: 15, value: undefined, mask: undefined },
// { id: '{u', time: 200n, cmd: 30, value: 0xf0f0f0f0f0f0f0f0n, mask: 0xff00ff00ff00ff00n },
// { id: '"}G', time: 300n, cmd: 14, value: undefined, mask: undefined },
// { id: '{u', time: 300n, cmd: 30, value: 0xf000000000000000n, mask: 0n },
// { id: 'u)', time: 300n, cmd: 30, value: 0n, mask: 0n },
// { id: '{u', time: 301n, cmd: 30, value: 0x0f00000000000000n, mask: 0n },
// { id: 'u)', time: 301n, cmd: 30, value: 1n, mask: 0n },
// { id: '{u', time: 302n, cmd: 30, value: 0x00f0000000000000n, mask: 0n },
// { id: 'u)', time: 302n, cmd: 30, value: 2n, mask: 0n },
// { id: '{u', time: 303n, cmd: 30, value: 0x000f000000000000n, mask: 0n },
// { id: 'u)', time: 303n, cmd: 30, value: 3n, mask: 0n },
// { id: '{u', time: 304n, cmd: 30, value: 0x0000f00000000000n, mask: 0n },
// { id: 'u)', time: 304n, cmd: 30, value: 4n, mask: 0n },
// { id: '{u', time: 305n, cmd: 30, value: 0x00000f0000000000n, mask: 0n },
// { id: 'u)', time: 305n, cmd: 30, value: 5n, mask: 0n },
// { id: '{u', time: 306n, cmd: 30, value: 0x000000f000000000n, mask: 0n },
// { id: 'u)', time: 306n, cmd: 30, value: 6n, mask: 0n },
// { id: '{u', time: 307n, cmd: 30, value: 0x0000000f00000000n, mask: 0n },
// { id: 'u)', time: 307n, cmd: 30, value: 7n, mask: 0n },
// { id: '{u', time: 308n, cmd: 31, value: 0x00000000f0000000n, mask: 0n },
// { id: 'u)', time: 308n, cmd: 30, value: 8n, mask: 0n },
// { id: '{u', time: 309n, cmd: 30, value: 0x000000000f000000n, mask: 0n },
// { id: 'u)', time: 309n, cmd: 30, value: 9n, mask: 0n },
// { id: '{u', time: 310n, cmd: 30, value: 0x0000000000f00000n, mask: 0n },
// { id: 'u)', time: 310n, cmd: 30, value: 10n, mask: 0n },
// { id: '{u', time: 311n, cmd: 30, value: 0x00000000000f0000n, mask: 0n },
// { id: 'u)', time: 311n, cmd: 30, value: 11n, mask: 0n },
// { id: '{u', time: 312n, cmd: 30, value: 0x000000000000f000n, mask: 0n },
// { id: 'u)', time: 312n, cmd: 30, value: 12n, mask: 0n },
// { id: '{u', time: 313n, cmd: 30, value: 0x0000000000000f00n, mask: 0n },
// { id: 'u)', time: 313n, cmd: 30, value: 13n, mask: 0n },
// { id: '{u', time: 314n, cmd: 30, value: 0x00000000000000f0n, mask: 0n },
// { id: 'u)', time: 314n, cmd: 30, value: 14n, mask: 0n },
// { id: '{u', time: 315n, cmd: 30, value: 0x000000000000000fn, mask: 0n },
// { id: 'u)', time: 315n, cmd: 30, value: 15n, mask: 0n },
// { id: '"}G', time: 316n, cmd: 15, value: undefined, mask: undefined }
// ];
// describe('wasm dump', () => {
// it('simple wasm', done => {
// fs.readFile(path.join(__dirname, 'dump.vcd'), function (err, src) {
// if (err) {
// throw new Error(err);
// }
// createVCD().then((mod) => {
// webVcdParser(mod).then((inst) => {
// const dump = [];
// ['"}G', '{u', 'u)'] // array of all signal ids
// .map(id =>
// inst.change.on(id, (time, cmd, value, mask) => {
// const row = {
// id,
// time,
// cmd,
// value,
// mask
// };
// dump.push(row);
// // console.log(row);
// })
// );
// inst.on('finish', () => {
// expect(inst.getTime()).to.eq(316n);
// // console.log(dump);
// // expect(dump.length).to.eq(expectaitions.length);
// expect(dump).to.deep.eq(expectaitions);
// done();
// });
// const step = (Math.random() * 500) |0;
// for (const chunk of chopper(src, step)) {
// // console.log('\n\u001b[31m[\u001b[0m' + chunk.toString() + '\u001b[31m](\u001b[0m\n' + chunk.length + '\u001b[31m)\u001b[0m\n');
// inst.write(chunk);
// }
// inst.end();
// // console.log(step);
// });
// });
// });
// });
// });
// /* eslint-env mocha */

83
backup/wasm_events.js Normal file
View File

@ -0,0 +1,83 @@
// 'use strict';
// /* eslint-disable no-console */
// /* eslint-disable indent */
// /* eslint-disable no-unused-vars */
// const expect = require('chai').expect;
// const createVCD = require('../out/vcd.js');
// const webVcdParser = require('../lib/web-vcd-parser.js');
// describe('wasm events', () => {
// it('$enddefinitions', async function () {
// const mod = await createVCD();
// const inst = await webVcdParser(mod);
// inst.on('$enddefinitions', () => {
// expect(inst.info).to.deep.eq({
// status: 'simulation',
// timescale: ' 1ns ',
// date: ' Wed Sep 18 22:59:07 2019\n ',
// version: ' Generated by VerilatedVcd ',
// varId: 'u)',
// wires: {
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// stack: [{
// top: {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// }
// },
// {
// clock: '"}G',
// fruit: {
// point: 'u)'
// },
// leaf: {
// counter: '{u'
// }
// },
// {
// point: 'u)'
// }]
// });
// });
// expect(inst.write(`
// $version Generated by VerilatedVcd $end
// $date Wed Sep 18 22:59:07 2019
// $end
// $timescale 1ns $end
// $scope module top $end
// $var wire 1 "}G clock $end
// $scope module leaf $end
// $var wire 64 {u counter [63:0] $end
// $upscope $end
// $scope module fruit $end
// $var wire 4 u) point [3:0] $end
// $upscope $end
// $upscope $end
// $enddefinitions $end
// `
// )).to.eq(true);
// });
// });
// /* eslint-env mocha */

View File

@ -1,20 +1,12 @@
#!/usr/bin/env node
/* eslint-disable no-console */
/* eslint-disable indent */
'use strict';
const fs = require('fs');
const cp = require('child_process');
const llparse = require('llparse');
const gyp = cb => {
console.log('build');
const proc = cp.spawn('node-gyp', ['configure', 'build']);
proc.stderr.on('data', data => {
console.error(data.toString());
});
proc.on('close', (cb || (() => {
console.log('done');
})));
};
const objection = lut => arg => arg.split(/\s+/).reduce((res, key) => {
if (lut[key] === undefined) {
@ -49,66 +41,56 @@ const properties = {
const spaces = [' ', '\n', '\r', '\t'];
const lineSpaces = [' ', '\t'];
const generate = (cb) => {
// const llparseDot = require('llparse-dot');
function main() {
const projectName = 'vcd_parser';
const prj = 'vcd_parser';
const p = new llparse.LLParse(prj);
// 有关左推解析器框架 llparse 的文章移步我之前的博客https://kirigaya.cn/blog/article?seq=223
// 如果需要可视化项目图,可以取消下面的注释
// const { Dot } = require('llparse-dot');
// const llDot = new Dot();
// const dotCodeString = llDot.build(method);
// fs.writeFileSync(projectName + '.dot', code, { encoding: 'utf-8' });
Object.keys(properties).map(key => p.property(properties[key], key));
// 项目名为 vcd_parser
const p = new llparse.LLParse(projectName);
const {
// scopeIdentifierSpan,
varSizeSpan, varIdSpan, varNameSpan,
idSpan,
commandSpan,
timeSpan
} = `
varSizeSpan varIdSpan varNameSpan
idSpan
commandSpan
timeSpan
`
.trim().split(/\s+/)
.reduce((res, n) => Object.assign(res, {[n]: p.span(p.code.span(n))}), {});
// 注册一些属性
for (const propertyName of Object.keys(properties)) {
const propertyType = properties[propertyName];
p.property(propertyType, propertyName);
}
// scopeIdentifierSpan
const {
declaration,
// scopeType, scopeTypeEnd,
// scopeIdentifier, scopeIdentifierEnd,
varType, varTypeEnd,
varSize, varSizeEnd,
varId, varIdEnd,
varName, varNameEnd,
inDeclaration,
simulation,
inSimulation,
simulationTime,
simulationVector, simulationVectorEnd, simulationVectorRecovery,
simulationId
} = `
declaration
varType varTypeEnd
varSize varSizeEnd
varId varIdEnd
varName varNameEnd
inDeclaration
simulation
inSimulation
simulationTime
simulationVector simulationVectorEnd simulationVectorRecovery
simulationId
`
.trim().split(/\s+/)
.reduce((res, n) => Object.assign(res, {[n]: p.node(n)}), {});
// 自定义 code span对于游走到这些 span 后要如何处理,都在 vcd_span.c 文件里
// 比如对于 varNameSpan 的定义,在 vcd_span.c 中存在一个同名的函数来定义它
const varSizeSpan = p.span(p.code.span('varSizeSpan'));
const varIdSpan = p.span(p.code.span('varIdSpan'));
const varNameSpan = p.span(p.code.span('varNameSpan'));
const idSpan = p.span(p.code.span('idSpan'));
const commandSpan = p.span(p.code.span('commandSpan'));
const timeSpan = p.span(p.code.span('timeSpan'));
// 自定义 node, 他们都是具体的节点
const declaration = p.node('declaration');
const varType = p.node('varType');
const varTypeEnd = p.node('varTypeEnd');
const varSize = p.node('varSize');
const varSizeEnd = p.node('varSizeEnd');
const varId = p.node('varId');
const varIdEnd = p.node('varIdEnd');
const varName = p.node('varName');
const varNameEnd = p.node('varNameEnd');
const inDeclaration = p.node('inDeclaration');
const simulation = p.node('simulation');
const inSimulation = p.node('inSimulation');
const simulationTime = p.node('simulationTime');
const simulationVector = p.node('simulationVector');
const simulationVectorEnd = p.node('simulationVectorEnd');
const simulationVectorRecovery = p.node('simulationVectorRecovery');
const simulationId = p.node('simulationId');
const enddefinitions = p.node('inDeclarationEnd');
// scopeType scopeTypeEnd
// scopeIdentifier scopeIdentifierEnd
const enddefinitions = p.node('inDeclarationEnd');
const cmd = objection({
$comment: 1,
$date: 2,
@ -123,7 +105,8 @@ const generate = (cb) => {
$dumpon: 11,
$dumpvars: 12,
'#': 13,
'0': 14, '1': 15,
'0': 14,
'1': 15,
x: 16, X: 17,
z: 18, Z: 19,
u: 20, U: 21, // VHDL states
@ -134,50 +117,16 @@ const generate = (cb) => {
b: 30, B: 31, r: 32, R: 33
});
// p.code.store('command') 的具体执行逻辑移步 command-handler.js 中的 commandHandler
declaration
.match(spaces, declaration)
// .select(cmd('$scope'),
// p.invoke(p.code.store('command'), commandSpan.start(scopeType)))
// .select(cmd('$var'),
// p.invoke(p.code.store('command'), commandSpan.start(varType)))
.select(cmd('$scope $var $upscope $comment $date $timescale $version'),
.select(cmd('$scope $var $upscope $comment $date $timescale $version #'),
p.invoke(p.code.store('command'), commandSpan.start(inDeclaration)))
.select(cmd('$enddefinitions'),
p.invoke(p.code.store('command'), commandSpan.start(enddefinitions)))
.otherwise(p.error(1, 'Expected declaration command'));
// $scope module clkdiv2n_tb $end
// ^^^^^^
// scopeType.match(spaces, scopeType).otherwise(scopeTypeEnd);
// scopeTypeEnd
// .select(
// {
// module: 0,
// task: 1,
// function: 2,
// begin: 3,
// fork: 4,
// // extra scopes from Verilator
// generate: 5,
// struct: 6,
// union: 7,
// class: 8,
// interface: 9,
// package: 10,
// program: 11
// },
// p.invoke(p.code.store('type'), scopeIdentifier))
// .otherwise(p.error(2, 'Expected scope type'));
// $scope module clkdiv2n_tb $end
// ^^^^^^^^^^^
// scopeIdentifier.match(spaces, scopeIdentifier).otherwise(scopeIdentifierSpan.start(scopeIdentifierEnd));
// scopeIdentifierEnd.match(spaces, scopeIdentifierSpan.end(inDeclaration)).skipTo(scopeIdentifierEnd);
// $var reg 3 ( r_reg [2:0] $end
// ^^^
varType.match(spaces, varType).otherwise(varTypeEnd);
varTypeEnd
@ -232,8 +181,8 @@ const generate = (cb) => {
.skipTo(enddefinitions);
simulation
.match([' ', '\r', '\n', '\t', '$dumpvars', '$end'], simulation)
.select(cmd('$dumpall $dumpoff $dumpon $comment'),
.match([' ', '\r', '\n', '\t', '$dumpvars', '$dumpall', '$end'], simulation)
.select(cmd('$dumpoff $dumpon $comment'),
p.invoke(p.code.store('command'), commandSpan.start(inSimulation)))
.select(cmd('#'),
p.invoke(p.code.store('command'), timeSpan.start(simulationTime)))
@ -267,7 +216,7 @@ const generate = (cb) => {
p.invoke(
// p.code.mulAdd('value', {base: 2, signed: false}),
p.code.value('onDigit'),
{1: p.error(5, 'Content-Length overflow')},
{ 1: p.error(5, 'Content-Length overflow') },
simulationVector
)
)
@ -284,7 +233,7 @@ const generate = (cb) => {
},
p.invoke(
p.code.value('onRecover'),
{1: p.error(6, 'recover')},
{ 1: p.error(6, 'recover') },
simulation
)
)
@ -296,16 +245,24 @@ const generate = (cb) => {
const artifacts = p.build(declaration);
fs.writeFileSync(prj + '.h', artifacts.header);
fs.writeFileSync(projectName + '.h', artifacts.header);
// fs.writeFileSync('verilog_preprocessor.bc', artifacts.bitcode);
fs.writeFileSync(prj + '.c', artifacts.c);
fs.writeFileSync(projectName + '.c', artifacts.c);
// const dot = new llparseDot.Dot();
// fs.writeFileSync(prj + '.dot', dot.build(declaration));
// fs.writeFileSync(projectName + '.dot', dot.build(declaration));
cb();
// 使用 binding.gyp 把生成的 c 和 h 进行编译
console.log('build');
const proc = cp.spawn('node-gyp', ['configure', 'build']);
proc.stderr.on('data', data => {
console.error(data.toString());
});
proc.on('close', () => {
console.log('done');
});
};
generate(gyp);
main();
/* eslint camelcase: 0 */

View File

@ -1,5 +1,7 @@
#!/usr/bin/env node
'use strict';
/* eslint-disable no-console */
/* eslint-disable indent */
const fs = require('fs-extra');
const async = require('async');

View File

@ -1,5 +1,7 @@
#!/usr/bin/env node
'use strict';
/* eslint-disable no-console */
/* eslint-disable indent */
const $version = () => '$version Generated by VerilatedVcd $end\n';

230
bin/vcd.js Normal file
View File

@ -0,0 +1,230 @@
/* eslint-disable no-undef */
'use strict';
const createVCD = require('../out/vcd.js');
const webVcdParser = require('../lib/web-vcd-parser.js');
/**
* @typedef {Object} consumeConfig
* @property {number} maxChunkLength
* @property {boolean} useGcd
*
* @typedef {Object} vcdValue
* @property {string} kind
* @property {number[]} wave
*
* @typedef {Object} VarSignal
* @property { 'var' } kind
* @property { 'event' | 'integer' | 'parameter' | 'real' | 'realtime' | 'reg' | 'supply0' | 'supply1' | 'time' | 'tri' | 'triand' | 'trior' | 'trireg' | 'tri0' | 'tri1' | 'wand' | 'wire' | 'wor' | 'string' } type
* @property {string} name 信号的真实名字
* @property {string} link 信号的 id
* @property {number} size 位宽
*
* @typedef {Object} ScopeSignal
* @property { 'scope' } kind
* @property { 'module' | 'begin' | 'fork' | 'function' | 'task' } type
* @property {string} name
* @property {ScopeSignal[]} body
*
* @typedef { VarSignal | ScopeSignal } VcdSignal
*
* @typedef {Object} VcdInfo
* @property {number} t0
* @property {number} timescale
* @property {string} version
* @property {string} date
* @property {string} status
* @property {VcdSignal} wires
*
* @typedef {Object} VcdBasicInfo
* @property {number} time
* @property {number} tgcd
* @property {VcdInfo} vcdInfo
* @property {any} signalValues
*/
// 结果变量
const vcdBasicInfo = {
signalValues: {},
vcdInfo: undefined,
tgcd: undefined,
time: undefined
};
/**
*
* @param {number} a
* @param {number} b
* @returns {number}
*/
function gcd(a, b) {
if (a === undefined) {
return b;
}
let r;
while (b !== 0) {
r = a % b;
a = b;
b = r;
}
return (a < 0) ? -a : a;
}
const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER);
/**
*
* @param {BigInt} val
* @returns {string | number}
*/
function numberOrString(val) {
if (val < MAX_SAFE_INTEGER) {
return Number(val);
}
const stringNumber = '0x' + val.toString(16);
return stringNumber;
}
/**
*
* @param {string} timescale
* @returns {string}
*/
function parseTimescale(timescale) {
if (typeof timescale !== 'string') {
return;
}
const str1 = timescale.trim();
const m = str1.match(/^(\d+)\s*(\w+)$/);
const res1 = ({ 1: 0, 10: 1, 100: 2 })[m[1]];
const res2 = ({ s: 0, ms: -3, us: -6, ns: -9, ps: -12, fs: -15 })[m[2]];
return res1 + res2;
}
/**
* @param {{
* wasmBinary: any
* }} moduleArg
* @returns {{
* write: (piece: Uint8Array) => void
* consume: (arraybuffer: ArrayBuffer, config?: consumeConfig) => void
* getBasicInfo: () => VcdBasicInfo
* clean: () => void
* }}
*/
async function makeVcdStream(moduleArg) {
const vcdstream = await getVcdStream(moduleArg);
// 使用 vcdstream 的 any 回调获取波形数据,并按照正确的格式进行解码和存储
// 这段处理来自 https://github.com/wavedrom/vcd 的 vcd-pipe-deso.js 的 58 行
// 请严格对准转换规则
vcdstream.change.any((id, time, cmd, value, mask) => {
const time53 = Number(time);
vcdBasicInfo.tgcd = gcd(vcdBasicInfo.tgcd, time53);
const values = vcdBasicInfo.signalValues[id] || { kind: '', wave: [] };
vcdBasicInfo.signalValues[id] = values;
if (cmd >= 14 && cmd <= 28) {
values.kind = 'bit';
values.wave.push([time53, cmd - 14]);
// if (values.wave.length >= 2) {
// const first = values.wave.at(-2)[0];
// const second = values.wave.at(-1)[0];
// if (first > second) {
// console.log(first, second);
// }
// }
} else {
values.kind = 'vec';
const point = [time53, numberOrString(value)];
if (mask !== 0n) {
point.push(numberOrString(mask));
}
values.wave.push(point);
}
});
vcdstream.consume = (arraybuffer, config) => {
return consume(vcdstream, arraybuffer, config);
};
vcdstream.getBasicInfo = () => {
return vcdBasicInfo;
};
vcdstream.clean = () => {
vcdBasicInfo.signalValues = {};
vcdBasicInfo.vcdInfo = undefined;
vcdBasicInfo.tgcd = undefined;
vcdBasicInfo.time = undefined;
}
return vcdstream;
}
/**
*
* @param {ArrayBuffer} arraybuffer
* @param {consumeConfig} config
*/
function consume(vcdstream, arraybuffer, config) {
config = config || { maxChunkLength: 1 << 17, useGcd: true };
const maxChunkLength = config.maxChunkLength;
const uint8array = new Uint8Array(arraybuffer);
for (let i = 0; i < uint8array.length; i += maxChunkLength) {
const piece = uint8array.slice(i, i + maxChunkLength);
vcdstream.write(piece);
}
// 装载信息
if (vcdBasicInfo.time === undefined) {
vcdBasicInfo.time = Number(vcdstream.getTime());
}
if (vcdBasicInfo.vcdInfo === undefined) {
vcdBasicInfo.vcdInfo = vcdstream.info;
}
// 通过 gcd 来缩放时间
const tgcd = vcdBasicInfo.tgcd;
const signalValues = vcdBasicInfo.signalValues;
vcdBasicInfo.time /= tgcd;
vcdBasicInfo.vcdInfo.t0 /= tgcd;
vcdBasicInfo.vcdInfo.timescale = parseTimescale(vcdBasicInfo.vcdInfo.timescale);
for (const id of Object.keys(signalValues)) {
// point[0] 是当前这个点的时间点
signalValues[id].wave.map(point => { point[0] /= tgcd });
}
const exp = Math.log10(tgcd) | 0;
if (exp > 0) {
const scale = Math.pow(10, exp);
const scaleGcd = tgcd / scale;
if (scaleGcd === (scaleGcd | 0)) {
vcdBasicInfo.tgcd = scaleGcd;
vcdBasicInfo.vcdInfo.timescale += exp;
}
}
}
async function getVcdStream(moduleArg) {
const wasm = await createVCD(moduleArg);
const vcdstream = await webVcdParser(wasm);
return vcdstream;
}
// 测试时关闭该函数
// 部署时激活该函数
try {
self.getVcdStream = getVcdStream;
self.makeVcdStream = makeVcdStream;
self.vcdBasicInfo = vcdBasicInfo;
} catch (error) {}
module.exports = {
getVcdStream,
makeVcdStream,
vcdBasicInfo
};

3
deploy.sh Normal file
View File

@ -0,0 +1,3 @@
browserify ./bin/vcd.js | terser --compress -o ./out/vcd-web.js
cp out/vcd-web.js $1/public/vcd.js
cp out/vcd.wasm $1/public/vcd.wasm

3
install.sh Normal file
View File

@ -0,0 +1,3 @@
source $EMCC_HOME/emsdk_env.sh
npm install browserify terser node-gyp -g
npm i

View File

@ -1,4 +1,6 @@
'use strict';
/* eslint-disable no-console */
/* eslint-disable indent */
module.exports = skip => {
let start = 0;

View File

@ -1,8 +1,10 @@
'use strict';
/* eslint-disable no-console */
/* eslint-disable indent */
const handleScope = (info, str) => {
const [type, name] = str.split(/\s+/);
const ero = {kind: 'scope', type, name, body: []};
const ero = { kind: 'scope', type, name, body: [] };
const current = info.stack[info.stack.length - 1];
current.body.push(ero);
info.stack.push(ero);
@ -36,36 +38,45 @@ const handleVar = (info, str) => {
// console.log(ero);
};
/**
* @description 处理 C++ 中的 on_command 函数也就是 llparse 框架中的 p.code.store('command') 触发的函数
* @param {} info
* @param {*} cmd
* @param {*} str
*/
const commandHandler = (info, cmd, str) => {
str = str.trim();
switch(cmd) {
switch (cmd) {
case 1:
// 处理 comment
info.comment = str;
// console.log(['comment', str]);
break;
case 2:
// 处理 date
info.date = str;
// console.log(['date', str]);
break;
case 3:
// 处理 scope
handleScope(info, str);
break;
case 4:
// 处理 timescale
info.timescale = str;
// console.log(['timescale', str]);
break;
case 5:
handleUpScope(info, str);
break;
case 6:
// 处理变量申明link 和 wire name 的对应关系)
handleVar(info, str);
break;
case 7:
// 处理 version
info.version = str;
// console.log(['version', str]);
break;
default:
console.log([cmd, str]);
// console.log([cmd, str]);
}
};

View File

@ -1,4 +1,6 @@
'use strict';
/* eslint-disable no-console */
/* eslint-disable indent */
const stream = require('stream');
const EventEmitter = require('events').EventEmitter;
@ -34,7 +36,7 @@ module.exports = () => {
const err = lib.execute(cxt, lifemit, triemit2, info, chunk);
if (err) {
// console.log(info);
console.log(err);
// console.log(err);
// throw new Error(err);
}
callback();
@ -42,7 +44,6 @@ module.exports = () => {
s.change = {
on: (id, fn) => {
// console.log(id);
triemit2 = triemit;
triee.on(id, fn);
const triggerString = triee.eventNames().join('\0') + '\0\0';

View File

@ -1,4 +1,6 @@
'use strict';
/* eslint-disable no-console */
/* eslint-disable indent */
const parseTimescale = require('./parse-time-scale.js');
@ -84,7 +86,7 @@ module.exports = async (deso, inst, done) => {
inst.change.any(onAnyChange);
inst.on('finish', () => {
console.log((Date.now() - t0) / 1000);
// console.log((Date.now() - t0) / 1000);
deso.tgcd = tgcd;
deso.t0 = (inst.info.t0 || 0);
// console.log(inst.getTime());

View File

@ -2,29 +2,8 @@
const stream = require('stream');
const EventEmitter = require('events').EventEmitter;
const dotProp = require('dot-prop');
const commandHandler = require('./command-handler.js');
// function _waitForStart(mod) {
// return new Promise((resolve)=>{
// mod.addOnPostRun(resolve);
// });
// }
// function u8ToBn(u8) {
// let str = '';
// for (let i = 0; i < u8.length; i++) {
// const val = u8[i];
// str = val.toString(16) + str;
// if (val < 16) {
// str = '0' + str;
// }
// }
// return BigInt('0x' + str);
// }
function h8ToBn(HEAPU8, start, len) {
if (len === 0) {
return 0n;
@ -41,8 +20,6 @@ function h8ToBn(HEAPU8, start, len) {
return BigInt('0x' + str);
}
// let startCalled = 0;
const bindCWrap = (c, wasm) => {
const w = wasm.cwrap;
c.execute = w('execute', 'number', ['number', 'number', 'number', 'number', 'number', 'array', 'number']);
@ -52,35 +29,22 @@ const bindCWrap = (c, wasm) => {
};
const getWrapper = wasm => {
// console.log(wasm);
const c = {};
let bindCallback;
const start = async() => {
// if( !startCalled ) {
// await _waitForStart(wasm);
// startCalled++;
// }
// console.log('s1');
const start = async () => {
bindCWrap(c, wasm);
// console.log('s2');
bindCallback();
// console.log('s3');
};
// gets a string from a c heap pointer and length
/**
* @description 给定一个 C 语言的堆指针和长度返回这段代表的字符串
* @param {*} name
* @param {*} len
* @returns
*/
const getString = (name, len) => {
// const view = wasm.HEAPU8.subarray(name, name+len);
// let string = '';
// for (let i = 0; i < len; i++) {
// string += String.fromCharCode(view[i]);
// }
// return string;
let string = '';
const end = name + len;
for (let i = name; i < end; i++) {
@ -97,7 +61,9 @@ const getWrapper = wasm => {
let ee = [];
// 触发回调的事件
let boundEE0;
// 触发回调的事件
let boundEE1;
let context = -1;
@ -114,20 +80,6 @@ const getWrapper = wasm => {
/* uint64_t* */ mask
) => {
const name = getString(eventName, eventNameLength);
// console.log(`event name`);
// console.log({name, time, command, valueWords});
// const view0 = wasm.HEAPU8.subarray(value, value+(valueWords*8));
// const view1 = wasm.HEAPU8.subarray(mask, mask+(valueWords*8));
// let bigValue = u8ToBn(view0);
// let bigMask = u8ToBn(view1);
// let bigValue = 0n;
// console.log(bigValue.toString(16));
if (cmd >= 14 && cmd <= 28) {
ee[1](name, time, cmd);
} else {
@ -140,65 +92,47 @@ const getWrapper = wasm => {
// wasm.addFunction can't be called until after
// start finishes
bindCallback = () => {
boundSet = wasm.addFunction(function(name, len, type, v0, v1) {
boundSet = wasm.addFunction(function (name, len, type, v0, v1) {
let prop = getString(name, len);
let tmp;
switch(type) {
switch (type) {
// set number
case 0:
boundInfo[prop] = v0;
// console.log(`setting ${prop} to ${boundInfo[prop]}`);
break;
// set string
case 1:
boundInfo[prop] = getString(v0, v1);
// console.log(`setting ${prop} to ${boundInfo[prop]}`);
break;
// set string to path
case 2:
dotProp.set(boundInfo, prop, getString(v0, v1));
// console.log(`setting ${prop} to ${getString(v0, v1)}`);
break;
// path to path (any type)
case 3:
tmp = getString(v0, v1)
.split(',')
.map(e => dotProp.get(boundInfo, e));
if (tmp.length === 1) {
dotProp.set(boundInfo, prop, tmp[0]);
break;
}
dotProp.set(boundInfo, prop, tmp);
break;
// create empty object at path
case 4:
// console.log(`${prop} is new {}`);
dotProp.set(boundInfo, prop, {});
break;
case 5:
commandHandler(boundInfo, v0, prop);
break;
default: throw new Error();
}
// viiiii means returns void, accepts int int int int int
}, 'viiiii');
boundGet = wasm.addFunction(function(name, len) {
boundGet = wasm.addFunction(function (name, len) {
let prop = getString(name, len);
return prop;
}, 'iii');
boundEE0 = wasm.addFunction(function(name, len) {
boundEE0 = wasm.addFunction(function (name, len) {
ee[0](getString(name, len));
}, 'vii');
boundEE1 = wasm.addFunction(onEE1, 'viijiiiii');
};
return {
@ -211,6 +145,15 @@ const getWrapper = wasm => {
context = c.init(boundEE0, boundEE1, boundSet, boundGet);
return context;
},
/**
*
* @param {*} ctx
* @param {*} cb0
* @param {*} cb1
* @param {*} info
* @param {*} chunk
* @returns
*/
execute: (ctx, cb0, cb1, info, chunk) => {
boundInfo = info;
ee[0] = cb0;
@ -229,41 +172,25 @@ const getWrapper = wasm => {
module.exports = async wasm => {
const lib = getWrapper(wasm);
// console.log('getWrapper', lib);
await lib.start();
// console.log('vcd wasm srarted');
const wires = {kind: 'scope', type: '.', name: '.', body: []};
const info = {stack: [wires], wires};
const wires = { kind: 'scope', type: '.', name: '.', body: [] };
const info = { stack: [wires], wires };
const s = new stream.Writable();
// gets called by c with 1 argument, a string
const lifemit = s.emit.bind(s);
const triee = new EventEmitter();
// gets called by c with 5 arguments
// string eventName
// number state->time
// int command
// int state->value
// int state->mask
const triemit = triee.emit.bind(triee);
let triemit2 = triemit;
const cxt = lib.init(lifemit, triemit, info);
s._write = function (chunk, encoding, callback) {
// console.log('chunk:', chunk.length);
const err = lib.execute(cxt, lifemit, triemit2, info, chunk);
if (err) {
console.log(err);
}
// console.log(util.inspect(info, {showHidden: true, depth : null, colorize: true}));
// console.log(info.stack[0].top);
// console.log(info.stack[1]);
// console.log(info.stack[0].top == info.stack[1]);
// if (err) {
// console.log(err);
// }
callback();
};
@ -272,19 +199,17 @@ module.exports = async wasm => {
triemit2 = triemit;
triee.on(id, fn);
const triggerString = triee.eventNames().join(' ') + ' ';
// console.log(id, Buffer.from(triggerString));
lib.setTrigger(cxt, triggerString);
},
any: fn => {
// 挂载回调函数
triemit2 = fn;
lib.setTrigger(cxt, '\0');
}
};
s.info = info;
s.getTime = () => lib.getTime(cxt);
s.start = lib.start;
return s;

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -9,7 +9,7 @@
"nyc_mocha_napi": "nyc -r=text -r=lcov mocha test/napi_* ",
"nyc_mocha_wasm": "nyc -r=text -r=lcov mocha test/wasm_*",
"nyc_mocha": "nyc -r=text -r=lcov mocha",
"test": "eslint bin lib test && npm run nyc_mocha",
"test": "npm run nyc_mocha",
"testonly": "nyc -r=text -r=lcov mocha",
"watch": "mocha --watch",
"build.web": "browserify ./lib/vcd-web.js | terser --compress -o demo/vcd-web.min.js",
@ -42,7 +42,8 @@
"dependencies": {
"bindings": "^1.5.0",
"dot-prop": "^6.0.1",
"llparse": "^7.1.1"
"llparse": "^7.1.1",
"vcd-stream": "^1.5.0"
},
"devDependencies": {
"@drom/eslint-config": "^0.12.0",

BIN
test/SIMv0.1/Tb_Sync_FIFO.fsdb Executable file

Binary file not shown.

291454
test/SIMv0.1/Tb_Sync_FIFO.vcd Executable file

File diff suppressed because it is too large Load Diff

BIN
test/SIMv0.1/Tb_Sync_FIFO.view Executable file

Binary file not shown.

View File

@ -0,0 +1,9 @@
{"vcs1":{"timestamp_begin":1732625382.877297223, "rt":5.01, "ut":0.31, "st":0.03}}
{"vcselab":{"timestamp_begin":1732625387.916644982, "rt":4.82, "ut":0.11, "st":0.05}}
{"link":{"timestamp_begin":1732625392.764303221, "rt":0.08, "ut":0.06, "st":0.02}}
{"SNPS_VCS_INTERNAL_ROOT_START_TIME": 1732625382.538355217}
{"VCS_COMP_START_TIME": 1732625382.538355217}
{"VCS_COMP_END_TIME": 1732625392.901247473}
{"VCS_USER_OPTIONS": "-f /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/file_list/asic_fun_sim.f -o simv -l ./vcs.log +v2k +libext+.v+.V+.sv+.svh -sverilog -debug_access -timescale=1ns/1ps -P /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a -top Tb_Sync_FIFO -full64 -debug_all +vcs+initreg+random +notimingcheck -Mupdate -ucli -error=IWNF +lint=TFIPC-L"}
{"vcs1": {"peak_mem": 7567}}
{"stitch_vcselab": {"peak_mem": 7605}}

124
test/SIMv0.1/csrc/Makefile Executable file
View File

@ -0,0 +1,124 @@
# Makefile generated by VCS to build your model
# This file may be modified; VCS will not overwrite it unless -Mupdate is used
# define default verilog source directory
VSRC=..
# Override TARGET_ARCH
TARGET_ARCH=
# Choose name of executable
PRODUCTBASE=$(VSRC)/simv
PRODUCT=$(PRODUCTBASE)
# Product timestamp file. If product is newer than this one,
# we will also re-link the product.
PRODUCT_TIMESTAMP=product_timestamp
# Path to runtime library
DEPLIBS=
VCSUCLI=-lvcsucli
LLVM_FLAGS=
RUNTIME=-lvcsnew -lsimprofile -luclinative /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcs_tls.o $(DEPLIBS)
VCS_SAVE_RESTORE_OBJ=/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcs_save_restore_new.o
# Select your favorite compiler
# Linux:
# Compiler:
VCS_CC=gcc
# Internal CC for gen_c flow:
CC_CG=gcc
# Loader
LD=g++
STDLIB =
# Strip Flags for target product
STRIPFLAGS=
PRE_LDFLAGS= # Loader Flags
LDFLAGS= -rdynamic -Wl,-rpath='$$ORIGIN'/simv.daidir -Wl,-rpath=./simv.daidir -Wl,-rpath=/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib -L/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib
# Picarchive Flags
PICLDFLAGS= -Wl,-rpath-link=./
PIC_LD=ld
# C run time startup
CRT0=
# C run time startup
CRTN=
# Machine specific libraries
SYSLIBS=/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a -ldl -lm -lc -lpthread -ldl
# Default defines
SHELL=/bin/sh
VCSTMPSPECARG=
VCSTMPSPECENV=
# NOTE: if you have little space in $TMPDIR, but plenty in /foo,
#and you are using gcc, uncomment the next line
#VCSTMPSPECENV=SNPS_VCS_TMPDIR=/foo
TMPSPECARG=$(VCSTMPSPECARG)
TMPSPECENV=$(VCSTMPSPECENV)
CC=$(TMPSPECENV) $(VCS_CC) $(TMPSPECARG)
# C flags for compilation
CFLAGS=$(STDLIB)-w -pipe -fPIC -O -I/home/kumon/Synopsys/vcs/T-2022.06/include
CFLAGS_O0=-w -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -O0 -fno-strict-aliasing -fno-optimize-sibling-calls
CFLAGS_CG=-w -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -O -fno-strict-aliasing -fno-optimize-sibling-calls
CFLAGS_CG_CLIB=-w -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -O -fno-strict-aliasing -fno-optimize-sibling-calls
CFLAGS_RMAR=-w -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -O -fno-strict-aliasing -fno-optimize-sibling-calls
CFLAGS_CG+=$(STDLIB)
CFLAGS_CG_CLIB+=$(STDLIB)
CFLAGS_O0+=$(STDLIB)
LD_PARTIAL_LOADER=ld
# Partial linking
LD_PARTIAL=$(LD_PARTIAL_LOADER) -r -o
LIBS=-lnuma -lvirsim -lerrorinf -lsnpsmalloc -lvfs /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a
# Note: if make gives you errors about include, either get gmake, or
# replace the following line with the contents of the file filelist,
# EACH TIME IT CHANGES
# included file defines OBJS, and is automatically generated by vcs
include filelist
OBJS=$(VLOG_OBJS) $(SYSC_OBJS) $(VHDL_OBJS)
product : $(PRODUCT_TIMESTAMP)
@echo $(PRODUCT) up to date
objects : $(OBJS) $(DPI_STUB_OBJS) $(PLI_STUB_OBJS)
clean :
rm -f $(VCS_OBJS) $(CU_OBJS)
clobber : clean
rm -f $(PRODUCT) $(PRODUCT_TIMESTAMP)
picclean :
rm -f _cuarc*.so _csrc*.so pre_vcsobj_*.so share_vcsobj_*.so
@rm -f $(PRODUCT).daidir/_[0-9]*_archive_*.so 2>/dev/null
product_clean_order :
@$(MAKE) -f Makefile --no-print-directory picclean
@$(MAKE) -f Makefile --no-print-directory product_order
product_order : $(PRODUCT)
$(PRODUCT_TIMESTAMP) : product_clean_order
-if [ -x $(PRODUCT) ]; then chmod a-x $(PRODUCT); fi
$(LD) $(CRT0) -o $(PRODUCT) $(LLVM_FLAGS) $(STDLIB) $(PRE_LDFLAGS) $(STRIPFLAGS) $(PCLDFLAGS) $(LDFLAGS) $(PICLDFLAGS) $(OBJS) $(LIBS) $(RUNTIME) -Wl,-whole-archive $(VCSMXSAIF) $(VCSUCLI) $(PLILIBS) $(DECLIBS) $(BALIBS) -Wl,-no-whole-archive $(LINK_TB) $(DPI_STUB_OBJS) $(PLI_STUB_OBJS) $(VCS_SAVE_RESTORE_OBJ) $(SYSLIBS) $(CRTN)
@rm -f csrc[0-9]*.o
@rm -f cuarc[0-9]*.o
@touch $(PRODUCT_TIMESTAMP)
@-if [ -d ./objs ]; then find ./objs -type d -empty -delete; fi
$(PRODUCT) : $(LD_VERSION_CHECK) $(OBJS) $(DOTLIBS) $(DPI_STUB_OBJS) $(PLI_STUB_OBJS) $(CMODLIB) $(SYSC_STUB_LIB) /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvcsnew.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libsimprofile.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libuclinative.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcs_tls.o /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvcsucli.so $(VCS_SAVE_RESTORE_OBJ)
@touch $(PRODUCT)

View File

@ -0,0 +1,49 @@
# Makefile generated by VCS to build rmapats.so for your model
VSRC=..
# Override TARGET_ARCH
TARGET_ARCH=
# Select your favorite compiler
# Linux:
# Compiler:
VCS_CC=gcc
# Internal CC for gen_c flow:
CC_CG=gcc
# Loader
LD=g++
# Loader Flags
LDFLAGS=
# Default defines
SHELL=/bin/sh
VCSTMPSPECARG=
VCSTMPSPECENV=
# NOTE: if you have little space in $TMPDIR, but plenty in /foo,
#and you are using gcc, uncomment the next line
#VCSTMPSPECENV=SNPS_VCS_TMPDIR=/foo
TMPSPECARG=$(VCSTMPSPECARG)
TMPSPECENV=$(VCSTMPSPECENV)
CC=$(TMPSPECENV) $(VCS_CC) $(TMPSPECARG)
# C flags for compilation
CFLAGS=$(STDLIB)-w -pipe -fPIC -O -I/home/kumon/Synopsys/vcs/T-2022.06/include
CFLAGS_CG=-w -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -O -fno-strict-aliasing -fno-optimize-sibling-calls
CFLAGS_CG_CLIB=-w -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -O -fno-strict-aliasing -fno-optimize-sibling-calls
CFLAGS_RMAR=-w -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -O -fno-strict-aliasing -fno-optimize-sibling-calls
ASFLAGS=(null)
LIBS=
include filelist.hsopt
rmapats.so: $(HSOPT_OBJS)
@$(VCS_CC) $(LDFLAGS) $(LIBS) -shared -o ./../simv.daidir/rmapats.so $(HSOPT_OBJS)

BIN
test/SIMv0.1/csrc/SIM_l.o Executable file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,989 @@
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <stdio.h>
#include <dlfcn.h>
#ifdef __cplusplus
extern "C" {
#endif
extern void* VCS_dlsymLookup(const char *);
extern void vcsMsgReportNoSource1(const char *, const char*);
/* PLI routine: $fsdbDumpvars:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpvars
#define __VCS_PLI_STUB_novas_call_fsdbDumpvars
extern void novas_call_fsdbDumpvars(int data, int reason);
#pragma weak novas_call_fsdbDumpvars
void novas_call_fsdbDumpvars(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpvars");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpvars");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpvars");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpvars)(int data, int reason) = novas_call_fsdbDumpvars;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpvars */
/* PLI routine: $fsdbDumpvars:misc */
#ifndef __VCS_PLI_STUB_novas_misc
#define __VCS_PLI_STUB_novas_misc
extern void novas_misc(int data, int reason, int iparam );
#pragma weak novas_misc
void novas_misc(int data, int reason, int iparam )
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason, int iparam ) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason, int iparam )) dlsym(RTLD_NEXT, "novas_misc");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason, int iparam )) VCS_dlsymLookup("novas_misc");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason, iparam );
}
}
void (*__vcs_pli_dummy_reference_novas_misc)(int data, int reason, int iparam ) = novas_misc;
#endif /* __VCS_PLI_STUB_novas_misc */
/* PLI routine: $fsdbDumpvarsByFile:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpvarsByFile
#define __VCS_PLI_STUB_novas_call_fsdbDumpvarsByFile
extern void novas_call_fsdbDumpvarsByFile(int data, int reason);
#pragma weak novas_call_fsdbDumpvarsByFile
void novas_call_fsdbDumpvarsByFile(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpvarsByFile");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpvarsByFile");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpvarsByFile");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpvarsByFile)(int data, int reason) = novas_call_fsdbDumpvarsByFile;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpvarsByFile */
/* PLI routine: $fsdbAddRuntimeSignal:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbAddRuntimeSignal
#define __VCS_PLI_STUB_novas_call_fsdbAddRuntimeSignal
extern void novas_call_fsdbAddRuntimeSignal(int data, int reason);
#pragma weak novas_call_fsdbAddRuntimeSignal
void novas_call_fsdbAddRuntimeSignal(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbAddRuntimeSignal");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbAddRuntimeSignal");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbAddRuntimeSignal");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbAddRuntimeSignal)(int data, int reason) = novas_call_fsdbAddRuntimeSignal;
#endif /* __VCS_PLI_STUB_novas_call_fsdbAddRuntimeSignal */
/* PLI routine: $sps_create_transaction_stream:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_create_transaction_stream
#define __VCS_PLI_STUB_novas_call_sps_create_transaction_stream
extern void novas_call_sps_create_transaction_stream(int data, int reason);
#pragma weak novas_call_sps_create_transaction_stream
void novas_call_sps_create_transaction_stream(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_create_transaction_stream");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_create_transaction_stream");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_create_transaction_stream");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_create_transaction_stream)(int data, int reason) = novas_call_sps_create_transaction_stream;
#endif /* __VCS_PLI_STUB_novas_call_sps_create_transaction_stream */
/* PLI routine: $sps_begin_transaction:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_begin_transaction
#define __VCS_PLI_STUB_novas_call_sps_begin_transaction
extern void novas_call_sps_begin_transaction(int data, int reason);
#pragma weak novas_call_sps_begin_transaction
void novas_call_sps_begin_transaction(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_begin_transaction");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_begin_transaction");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_begin_transaction");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_begin_transaction)(int data, int reason) = novas_call_sps_begin_transaction;
#endif /* __VCS_PLI_STUB_novas_call_sps_begin_transaction */
/* PLI routine: $sps_end_transaction:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_end_transaction
#define __VCS_PLI_STUB_novas_call_sps_end_transaction
extern void novas_call_sps_end_transaction(int data, int reason);
#pragma weak novas_call_sps_end_transaction
void novas_call_sps_end_transaction(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_end_transaction");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_end_transaction");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_end_transaction");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_end_transaction)(int data, int reason) = novas_call_sps_end_transaction;
#endif /* __VCS_PLI_STUB_novas_call_sps_end_transaction */
/* PLI routine: $sps_free_transaction:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_free_transaction
#define __VCS_PLI_STUB_novas_call_sps_free_transaction
extern void novas_call_sps_free_transaction(int data, int reason);
#pragma weak novas_call_sps_free_transaction
void novas_call_sps_free_transaction(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_free_transaction");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_free_transaction");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_free_transaction");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_free_transaction)(int data, int reason) = novas_call_sps_free_transaction;
#endif /* __VCS_PLI_STUB_novas_call_sps_free_transaction */
/* PLI routine: $sps_add_attribute:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_add_attribute
#define __VCS_PLI_STUB_novas_call_sps_add_attribute
extern void novas_call_sps_add_attribute(int data, int reason);
#pragma weak novas_call_sps_add_attribute
void novas_call_sps_add_attribute(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_add_attribute");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_add_attribute");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_add_attribute");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_add_attribute)(int data, int reason) = novas_call_sps_add_attribute;
#endif /* __VCS_PLI_STUB_novas_call_sps_add_attribute */
/* PLI routine: $sps_update_label:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_update_label
#define __VCS_PLI_STUB_novas_call_sps_update_label
extern void novas_call_sps_update_label(int data, int reason);
#pragma weak novas_call_sps_update_label
void novas_call_sps_update_label(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_update_label");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_update_label");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_update_label");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_update_label)(int data, int reason) = novas_call_sps_update_label;
#endif /* __VCS_PLI_STUB_novas_call_sps_update_label */
/* PLI routine: $sps_add_relation:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_add_relation
#define __VCS_PLI_STUB_novas_call_sps_add_relation
extern void novas_call_sps_add_relation(int data, int reason);
#pragma weak novas_call_sps_add_relation
void novas_call_sps_add_relation(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_add_relation");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_add_relation");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_add_relation");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_add_relation)(int data, int reason) = novas_call_sps_add_relation;
#endif /* __VCS_PLI_STUB_novas_call_sps_add_relation */
/* PLI routine: $fsdbWhatif:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbWhatif
#define __VCS_PLI_STUB_novas_call_fsdbWhatif
extern void novas_call_fsdbWhatif(int data, int reason);
#pragma weak novas_call_fsdbWhatif
void novas_call_fsdbWhatif(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbWhatif");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbWhatif");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbWhatif");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbWhatif)(int data, int reason) = novas_call_fsdbWhatif;
#endif /* __VCS_PLI_STUB_novas_call_fsdbWhatif */
/* PLI routine: $paa_init:call */
#ifndef __VCS_PLI_STUB_novas_call_paa_init
#define __VCS_PLI_STUB_novas_call_paa_init
extern void novas_call_paa_init(int data, int reason);
#pragma weak novas_call_paa_init
void novas_call_paa_init(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_paa_init");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_paa_init");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_paa_init");
}
}
void (*__vcs_pli_dummy_reference_novas_call_paa_init)(int data, int reason) = novas_call_paa_init;
#endif /* __VCS_PLI_STUB_novas_call_paa_init */
/* PLI routine: $paa_sync:call */
#ifndef __VCS_PLI_STUB_novas_call_paa_sync
#define __VCS_PLI_STUB_novas_call_paa_sync
extern void novas_call_paa_sync(int data, int reason);
#pragma weak novas_call_paa_sync
void novas_call_paa_sync(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_paa_sync");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_paa_sync");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_paa_sync");
}
}
void (*__vcs_pli_dummy_reference_novas_call_paa_sync)(int data, int reason) = novas_call_paa_sync;
#endif /* __VCS_PLI_STUB_novas_call_paa_sync */
/* PLI routine: $fsdbDumpClassMethod:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpClassMethod
#define __VCS_PLI_STUB_novas_call_fsdbDumpClassMethod
extern void novas_call_fsdbDumpClassMethod(int data, int reason);
#pragma weak novas_call_fsdbDumpClassMethod
void novas_call_fsdbDumpClassMethod(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpClassMethod");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpClassMethod");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpClassMethod");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpClassMethod)(int data, int reason) = novas_call_fsdbDumpClassMethod;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpClassMethod */
/* PLI routine: $fsdbSuppressClassMethod:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbSuppressClassMethod
#define __VCS_PLI_STUB_novas_call_fsdbSuppressClassMethod
extern void novas_call_fsdbSuppressClassMethod(int data, int reason);
#pragma weak novas_call_fsdbSuppressClassMethod
void novas_call_fsdbSuppressClassMethod(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbSuppressClassMethod");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbSuppressClassMethod");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbSuppressClassMethod");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbSuppressClassMethod)(int data, int reason) = novas_call_fsdbSuppressClassMethod;
#endif /* __VCS_PLI_STUB_novas_call_fsdbSuppressClassMethod */
/* PLI routine: $fsdbSuppressClassProp:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbSuppressClassProp
#define __VCS_PLI_STUB_novas_call_fsdbSuppressClassProp
extern void novas_call_fsdbSuppressClassProp(int data, int reason);
#pragma weak novas_call_fsdbSuppressClassProp
void novas_call_fsdbSuppressClassProp(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbSuppressClassProp");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbSuppressClassProp");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbSuppressClassProp");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbSuppressClassProp)(int data, int reason) = novas_call_fsdbSuppressClassProp;
#endif /* __VCS_PLI_STUB_novas_call_fsdbSuppressClassProp */
/* PLI routine: $fsdbDumpMDAByFile:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpMDAByFile
#define __VCS_PLI_STUB_novas_call_fsdbDumpMDAByFile
extern void novas_call_fsdbDumpMDAByFile(int data, int reason);
#pragma weak novas_call_fsdbDumpMDAByFile
void novas_call_fsdbDumpMDAByFile(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpMDAByFile");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpMDAByFile");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpMDAByFile");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpMDAByFile)(int data, int reason) = novas_call_fsdbDumpMDAByFile;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpMDAByFile */
/* PLI routine: $fsdbTrans_create_stream_begin:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_create_stream_begin
#define __VCS_PLI_STUB_novas_call_fsdbEvent_create_stream_begin
extern void novas_call_fsdbEvent_create_stream_begin(int data, int reason);
#pragma weak novas_call_fsdbEvent_create_stream_begin
void novas_call_fsdbEvent_create_stream_begin(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_create_stream_begin");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_create_stream_begin");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_create_stream_begin");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_create_stream_begin)(int data, int reason) = novas_call_fsdbEvent_create_stream_begin;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_create_stream_begin */
/* PLI routine: $fsdbTrans_define_attribute:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_add_stream_attribute
#define __VCS_PLI_STUB_novas_call_fsdbEvent_add_stream_attribute
extern void novas_call_fsdbEvent_add_stream_attribute(int data, int reason);
#pragma weak novas_call_fsdbEvent_add_stream_attribute
void novas_call_fsdbEvent_add_stream_attribute(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_add_stream_attribute");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_add_stream_attribute");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_add_stream_attribute");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_add_stream_attribute)(int data, int reason) = novas_call_fsdbEvent_add_stream_attribute;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_add_stream_attribute */
/* PLI routine: $fsdbTrans_create_stream_end:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_create_stream_end
#define __VCS_PLI_STUB_novas_call_fsdbEvent_create_stream_end
extern void novas_call_fsdbEvent_create_stream_end(int data, int reason);
#pragma weak novas_call_fsdbEvent_create_stream_end
void novas_call_fsdbEvent_create_stream_end(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_create_stream_end");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_create_stream_end");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_create_stream_end");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_create_stream_end)(int data, int reason) = novas_call_fsdbEvent_create_stream_end;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_create_stream_end */
/* PLI routine: $fsdbTrans_begin:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_begin
#define __VCS_PLI_STUB_novas_call_fsdbEvent_begin
extern void novas_call_fsdbEvent_begin(int data, int reason);
#pragma weak novas_call_fsdbEvent_begin
void novas_call_fsdbEvent_begin(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_begin");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_begin");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_begin");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_begin)(int data, int reason) = novas_call_fsdbEvent_begin;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_begin */
/* PLI routine: $fsdbTrans_set_label:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_set_label
#define __VCS_PLI_STUB_novas_call_fsdbEvent_set_label
extern void novas_call_fsdbEvent_set_label(int data, int reason);
#pragma weak novas_call_fsdbEvent_set_label
void novas_call_fsdbEvent_set_label(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_set_label");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_set_label");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_set_label");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_set_label)(int data, int reason) = novas_call_fsdbEvent_set_label;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_set_label */
/* PLI routine: $fsdbTrans_add_attribute:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_add_attribute
#define __VCS_PLI_STUB_novas_call_fsdbEvent_add_attribute
extern void novas_call_fsdbEvent_add_attribute(int data, int reason);
#pragma weak novas_call_fsdbEvent_add_attribute
void novas_call_fsdbEvent_add_attribute(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_add_attribute");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_add_attribute");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_add_attribute");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_add_attribute)(int data, int reason) = novas_call_fsdbEvent_add_attribute;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_add_attribute */
/* PLI routine: $fsdbTrans_add_tag:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_add_tag
#define __VCS_PLI_STUB_novas_call_fsdbEvent_add_tag
extern void novas_call_fsdbEvent_add_tag(int data, int reason);
#pragma weak novas_call_fsdbEvent_add_tag
void novas_call_fsdbEvent_add_tag(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_add_tag");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_add_tag");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_add_tag");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_add_tag)(int data, int reason) = novas_call_fsdbEvent_add_tag;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_add_tag */
/* PLI routine: $fsdbTrans_end:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_end
#define __VCS_PLI_STUB_novas_call_fsdbEvent_end
extern void novas_call_fsdbEvent_end(int data, int reason);
#pragma weak novas_call_fsdbEvent_end
void novas_call_fsdbEvent_end(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_end");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_end");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_end");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_end)(int data, int reason) = novas_call_fsdbEvent_end;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_end */
/* PLI routine: $fsdbTrans_add_relation:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_add_relation
#define __VCS_PLI_STUB_novas_call_fsdbEvent_add_relation
extern void novas_call_fsdbEvent_add_relation(int data, int reason);
#pragma weak novas_call_fsdbEvent_add_relation
void novas_call_fsdbEvent_add_relation(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_add_relation");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_add_relation");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_add_relation");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_add_relation)(int data, int reason) = novas_call_fsdbEvent_add_relation;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_add_relation */
/* PLI routine: $fsdbTrans_get_error_code:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_get_error_code
#define __VCS_PLI_STUB_novas_call_fsdbEvent_get_error_code
extern void novas_call_fsdbEvent_get_error_code(int data, int reason);
#pragma weak novas_call_fsdbEvent_get_error_code
void novas_call_fsdbEvent_get_error_code(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_get_error_code");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_get_error_code");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_get_error_code");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_get_error_code)(int data, int reason) = novas_call_fsdbEvent_get_error_code;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_get_error_code */
/* PLI routine: $fsdbTrans_add_stream_attribute:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbTrans_add_stream_attribute
#define __VCS_PLI_STUB_novas_call_fsdbTrans_add_stream_attribute
extern void novas_call_fsdbTrans_add_stream_attribute(int data, int reason);
#pragma weak novas_call_fsdbTrans_add_stream_attribute
void novas_call_fsdbTrans_add_stream_attribute(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbTrans_add_stream_attribute");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbTrans_add_stream_attribute");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbTrans_add_stream_attribute");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbTrans_add_stream_attribute)(int data, int reason) = novas_call_fsdbTrans_add_stream_attribute;
#endif /* __VCS_PLI_STUB_novas_call_fsdbTrans_add_stream_attribute */
/* PLI routine: $fsdbTrans_add_scope_attribute:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbTrans_add_scope_attribute
#define __VCS_PLI_STUB_novas_call_fsdbTrans_add_scope_attribute
extern void novas_call_fsdbTrans_add_scope_attribute(int data, int reason);
#pragma weak novas_call_fsdbTrans_add_scope_attribute
void novas_call_fsdbTrans_add_scope_attribute(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbTrans_add_scope_attribute");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbTrans_add_scope_attribute");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbTrans_add_scope_attribute");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbTrans_add_scope_attribute)(int data, int reason) = novas_call_fsdbTrans_add_scope_attribute;
#endif /* __VCS_PLI_STUB_novas_call_fsdbTrans_add_scope_attribute */
/* PLI routine: $sps_interactive:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_interactive
#define __VCS_PLI_STUB_novas_call_sps_interactive
extern void novas_call_sps_interactive(int data, int reason);
#pragma weak novas_call_sps_interactive
void novas_call_sps_interactive(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_interactive");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_interactive");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_interactive");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_interactive)(int data, int reason) = novas_call_sps_interactive;
#endif /* __VCS_PLI_STUB_novas_call_sps_interactive */
/* PLI routine: $sps_test:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_test
#define __VCS_PLI_STUB_novas_call_sps_test
extern void novas_call_sps_test(int data, int reason);
#pragma weak novas_call_sps_test
void novas_call_sps_test(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_test");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_test");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_test");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_test)(int data, int reason) = novas_call_sps_test;
#endif /* __VCS_PLI_STUB_novas_call_sps_test */
/* PLI routine: $fsdbDumpClassObject:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpClassObject
#define __VCS_PLI_STUB_novas_call_fsdbDumpClassObject
extern void novas_call_fsdbDumpClassObject(int data, int reason);
#pragma weak novas_call_fsdbDumpClassObject
void novas_call_fsdbDumpClassObject(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpClassObject");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpClassObject");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpClassObject");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpClassObject)(int data, int reason) = novas_call_fsdbDumpClassObject;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpClassObject */
/* PLI routine: $fsdbDumpClassObjectByFile:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpClassObjectByFile
#define __VCS_PLI_STUB_novas_call_fsdbDumpClassObjectByFile
extern void novas_call_fsdbDumpClassObjectByFile(int data, int reason);
#pragma weak novas_call_fsdbDumpClassObjectByFile
void novas_call_fsdbDumpClassObjectByFile(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpClassObjectByFile");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpClassObjectByFile");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpClassObjectByFile");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpClassObjectByFile)(int data, int reason) = novas_call_fsdbDumpClassObjectByFile;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpClassObjectByFile */
/* PLI routine: $fsdbTrans_add_attribute_expand:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbEvent_add_attribute_expand
#define __VCS_PLI_STUB_novas_call_fsdbEvent_add_attribute_expand
extern void novas_call_fsdbEvent_add_attribute_expand(int data, int reason);
#pragma weak novas_call_fsdbEvent_add_attribute_expand
void novas_call_fsdbEvent_add_attribute_expand(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbEvent_add_attribute_expand");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbEvent_add_attribute_expand");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbEvent_add_attribute_expand");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbEvent_add_attribute_expand)(int data, int reason) = novas_call_fsdbEvent_add_attribute_expand;
#endif /* __VCS_PLI_STUB_novas_call_fsdbEvent_add_attribute_expand */
/* PLI routine: $ridbDump:call */
#ifndef __VCS_PLI_STUB_novas_call_ridbDump
#define __VCS_PLI_STUB_novas_call_ridbDump
extern void novas_call_ridbDump(int data, int reason);
#pragma weak novas_call_ridbDump
void novas_call_ridbDump(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_ridbDump");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_ridbDump");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_ridbDump");
}
}
void (*__vcs_pli_dummy_reference_novas_call_ridbDump)(int data, int reason) = novas_call_ridbDump;
#endif /* __VCS_PLI_STUB_novas_call_ridbDump */
/* PLI routine: $sps_flush_file:call */
#ifndef __VCS_PLI_STUB_novas_call_sps_flush_file
#define __VCS_PLI_STUB_novas_call_sps_flush_file
extern void novas_call_sps_flush_file(int data, int reason);
#pragma weak novas_call_sps_flush_file
void novas_call_sps_flush_file(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_sps_flush_file");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_sps_flush_file");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_sps_flush_file");
}
}
void (*__vcs_pli_dummy_reference_novas_call_sps_flush_file)(int data, int reason) = novas_call_sps_flush_file;
#endif /* __VCS_PLI_STUB_novas_call_sps_flush_file */
/* PLI routine: $fsdbDumpSingle:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpSingle
#define __VCS_PLI_STUB_novas_call_fsdbDumpSingle
extern void novas_call_fsdbDumpSingle(int data, int reason);
#pragma weak novas_call_fsdbDumpSingle
void novas_call_fsdbDumpSingle(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpSingle");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpSingle");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpSingle");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpSingle)(int data, int reason) = novas_call_fsdbDumpSingle;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpSingle */
/* PLI routine: $fsdbDumpIO:call */
#ifndef __VCS_PLI_STUB_novas_call_fsdbDumpIO
#define __VCS_PLI_STUB_novas_call_fsdbDumpIO
extern void novas_call_fsdbDumpIO(int data, int reason);
#pragma weak novas_call_fsdbDumpIO
void novas_call_fsdbDumpIO(int data, int reason)
{
static int _vcs_pli_stub_initialized_ = 0;
static void (*_vcs_pli_fp_)(int data, int reason) = NULL;
if (!_vcs_pli_stub_initialized_) {
_vcs_pli_stub_initialized_ = 1;
_vcs_pli_fp_ = (void (*)(int data, int reason)) dlsym(RTLD_NEXT, "novas_call_fsdbDumpIO");
if (_vcs_pli_fp_ == NULL) {
_vcs_pli_fp_ = (void (*)(int data, int reason)) VCS_dlsymLookup("novas_call_fsdbDumpIO");
}
}
if (_vcs_pli_fp_) {
_vcs_pli_fp_(data, reason);
} else {
vcsMsgReportNoSource1("PLI-DIFNF", "novas_call_fsdbDumpIO");
}
}
void (*__vcs_pli_dummy_reference_novas_call_fsdbDumpIO)(int data, int reason) = novas_call_fsdbDumpIO;
#endif /* __VCS_PLI_STUB_novas_call_fsdbDumpIO */
#ifdef __cplusplus
}
#endif

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
reYIK_d.o
g97qF_d.o
amcQwB.o

BIN
test/SIMv0.1/csrc/cgincr.sdb Executable file

Binary file not shown.

BIN
test/SIMv0.1/csrc/cginfo.json Executable file

Binary file not shown.

Binary file not shown.

BIN
test/SIMv0.1/csrc/checksum Executable file

Binary file not shown.

2
test/SIMv0.1/csrc/clean.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash -h
/bin/rm -rf `/bin/ls -A | /bin/grep -v "json" | /bin/grep -v "hsopt" | /bin/grep -v "product_timestamp" | /bin/grep -v "sysc"` >/dev/null 2>&1

31
test/SIMv0.1/csrc/filelist Executable file
View File

@ -0,0 +1,31 @@
AR=ar
DOTLIBS=/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvirsim.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/liberrorinf.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libsnpsmalloc.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvfs.so /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a
# This file is automatically generated by VCS. Any changes you make to it
# will be overwritten the next time VCS is run
VCS_LIBEXT=
XTRN_OBJS=
DPI_WRAPPER_OBJS =
DPI_STUB_OBJS =
# filelist.dpi will populate DPI_WRAPPER_OBJS and DPI_STUB_OBJS
include filelist.dpi
PLI_STUB_OBJS =
include filelist.pli
include filelist.hsopt
include filelist.cu
VCS_INCR_OBJS=
AUGDIR=
AUG_LDFLAGS=
SHARED_OBJ_SO=
VLOG_OBJS= $(VCS_OBJS) $(CU_OBJS) $(VCS_ARC0) $(XTRN_OBJS) $(DPI_WRAPPER_OBJS) $(VCS_INCR_OBJS) $(SHARED_OBJ_SO) $(HSOPT_OBJS)

38
test/SIMv0.1/csrc/filelist.cu Executable file
View File

@ -0,0 +1,38 @@
LDVERSION= $(shell $(PIC_LD) -v | grep -q 2.30 ;echo $$?)
ifeq ($(LDVERSION), 0)
LD_NORELAX_FLAG= --no-relax
endif
ARCHIVE_OBJS=
ARCHIVE_OBJS += _7567_archive_1.so
_7567_archive_1.so : archive.0/_7567_archive_1.a
@$(AR) -s $<
@$(PIC_LD) -shared -Bsymbolic $(LD_NORELAX_FLAG) -o .//../simv.daidir//_7567_archive_1.so --whole-archive $< --no-whole-archive
@rm -f $@
@ln -sf .//../simv.daidir//_7567_archive_1.so $@
VCS_CU_ARC_OBJS =
O0_OBJS =
$(O0_OBJS) : %.o: %.c
$(CC_CG) $(CFLAGS_O0) -c -o $@ $<
%.o: %.c
$(CC_CG) $(CFLAGS_CG) -c -o $@ $<
CU_UDP_OBJS = \
CU_LVL_OBJS = \
SIM_l.o
MAIN_OBJS = \
objs/amcQw_d.o
CU_OBJS = $(MAIN_OBJS) $(ARCHIVE_OBJS) $(CU_UDP_OBJS) $(CU_LVL_OBJS)

0
test/SIMv0.1/csrc/filelist.dpi Executable file
View File

View File

@ -0,0 +1,13 @@
rmapats_mop.o: rmapats.m
@/home/kumon/Synopsys/vcs/T-2022.06/linux64/bin/cgmop1 -tls_initexe -pic -gen_obj rmapats.m rmapats_mop.o; rm -f rmapats.m; touch rmapats.m; touch rmapats_mop.o
rmapats.o: rmapats.c
@$(CC_CG) $(CFLAGS_CG) -c -fPIC -x c -o rmapats.o rmapats.c
rmapats%.o: rmapats%.c
@$(CC_CG) $(CFLAGS_CG) -c -fPIC -x c -o $@ $<
rmar.o: rmar.c
@$(CC_CG) $(CFLAGS_RMAR) -c -fPIC -x c -o rmar.o rmar.c
rmar%.o: rmar%.c
@$(CC_CG) $(CFLAGS_RMAR) -c -fPIC -x c -o $@ $<
include filelist.hsopt.objs

View File

@ -0,0 +1 @@
LLVM_OBJS += rmar_llvm_0_1.o rmar_llvm_0_0.o

View File

@ -0,0 +1,7 @@
HSOPT_OBJS +=rmapats_mop.o \
rmapats.o \
rmar.o rmar_nd.o
include filelist.hsopt.llvm2_0.objs
HSOPT_OBJS += $(LLVM_OBJS)

6
test/SIMv0.1/csrc/filelist.pli Executable file
View File

@ -0,0 +1,6 @@
PLI_STUB_OBJS_OBJ0=_vcs_pli_stub_.o
PLI_STUB_OBJS_SRC0=_vcs_pli_stub_.c
PLI_STUB_OBJS += $(PLI_STUB_OBJS_OBJ0)
$(PLI_STUB_OBJS_OBJ0): $(PLI_STUB_OBJS_SRC0)
@$(CC) -I/home/kumon/Synopsys/vcs/T-2022.06/include -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include -fPIC -c -o $(PLI_STUB_OBJS_OBJ0) $(PLI_STUB_OBJS_SRC0)
@strip -g $(PLI_STUB_OBJS_OBJ0)

View File

BIN
test/SIMv0.1/csrc/objs/amcQw_d.o Executable file

Binary file not shown.

View File

46
test/SIMv0.1/csrc/rmapats.c Executable file
View File

@ -0,0 +1,46 @@
// file = 0; split type = patterns; threshold = 100000; total count = 0.
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include "rmapats.h"
void hsG_0__0 (struct dummyq_struct * I1381, EBLK * I1376, U I616);
void hsG_0__0 (struct dummyq_struct * I1381, EBLK * I1376, U I616)
{
U I1644;
U I1645;
U I1646;
struct futq * I1647;
struct dummyq_struct * pQ = I1381;
I1644 = ((U )vcs_clocks) + I616;
I1646 = I1644 & ((1 << fHashTableSize) - 1);
I1376->I662 = (EBLK *)(-1);
I1376->I663 = I1644;
if (0 && rmaProfEvtProp) {
vcs_simpSetEBlkEvtID(I1376);
}
if (I1644 < (U )vcs_clocks) {
I1645 = ((U *)&vcs_clocks)[1];
sched_millenium(pQ, I1376, I1645 + 1, I1644);
}
else if ((peblkFutQ1Head != ((void *)0)) && (I616 == 1)) {
I1376->I665 = (struct eblk *)peblkFutQ1Tail;
peblkFutQ1Tail->I662 = I1376;
peblkFutQ1Tail = I1376;
}
else if ((I1647 = pQ->I1284[I1646].I685)) {
I1376->I665 = (struct eblk *)I1647->I683;
I1647->I683->I662 = (RP )I1376;
I1647->I683 = (RmaEblk *)I1376;
}
else {
sched_hsopt(pQ, I1376, I1644);
}
}
#ifdef __cplusplus
extern "C" {
#endif
void SinitHsimPats(void);
#ifdef __cplusplus
}
#endif

2662
test/SIMv0.1/csrc/rmapats.h Executable file

File diff suppressed because it is too large Load Diff

0
test/SIMv0.1/csrc/rmapats.m Executable file
View File

BIN
test/SIMv0.1/csrc/rmapats.o Executable file

Binary file not shown.

BIN
test/SIMv0.1/csrc/rmapats_mop.o Executable file

Binary file not shown.

13
test/SIMv0.1/csrc/rmar.c Executable file
View File

@ -0,0 +1,13 @@
#include <stdio.h>
#include <stdlib.h>
#include "rmar0.h"
// stubs for Hil functions
#ifdef __cplusplus
extern "C" {
#endif
void __Hil__Static_Init_Func__(void) {}
#ifdef __cplusplus
}
#endif

20
test/SIMv0.1/csrc/rmar.h Executable file
View File

@ -0,0 +1,20 @@
#ifndef _RMAR1_H_
#define _RMAR1_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stdlib.h>
#ifndef __DO_RMAHDR_
#include "rmar0.h"
#endif /*__DO_RMAHDR_*/
extern UP rmaFunctionRtlArray[];
#ifdef __cplusplus
}
#endif
#endif

BIN
test/SIMv0.1/csrc/rmar.o Executable file

Binary file not shown.

13
test/SIMv0.1/csrc/rmar0.h Executable file
View File

@ -0,0 +1,13 @@
#ifndef _RMAR0_H_
#define _RMAR0_H_
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif

BIN
test/SIMv0.1/csrc/rmar_llvm_0_0.o Executable file

Binary file not shown.

BIN
test/SIMv0.1/csrc/rmar_llvm_0_1.o Executable file

Binary file not shown.

BIN
test/SIMv0.1/csrc/rmar_nd.o Executable file

Binary file not shown.

View File

@ -0,0 +1,18 @@
#######################################################################################
# fsdb.xxxxx.log : log primitive debug message of FSDB Reader
# This is for R&D to analyze when there are issues happening when FSDB reading
# The corresponding FSDB file is /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/Tb_Sync_FIFO.fsdb
#######################################################################################
[BASIC]Reader version : Chronologic Simulation VCS Release T-2022.06_Full64
[BASIC]simulator version : Chronologic Simulation VCS Release T-2022.06_Full64
[BASIC]dumper version : FSDB Dumper for VCS, Release Verdi_T-2022.06, Linux x86_64/64bit, 05/29/2022
[THREAD]The MTR thread count is 12
[THREAD]Secondary thread count: 11
[READSCOPE]ReadScopeTree calling time is 2
[READSCOPE]ReadScope_PartialLoad calling time is 0
[READSCOPE]Scope read by partial load count is 0
[READSCOPE]Scope read count is 4
[READSCOPE]Decompressed blk is 1
[FSDBGate Info] start
[FSDBGate Info] Total fhdb_compute_count = 135672
[FSDBGate Info] end

View File

@ -0,0 +1,3 @@
where
detach
quit

View File

@ -0,0 +1,6 @@
Command Line: /home/kumon/Synopsys/verdi/T-2022.06/platform/LINUXAMD64/bin/fsdb2vcd Tb_Sync_FIFO.fsdb -o Tb_Sync_FIFO.vcd
uname(Linux EDA-VM3 6.8.0-48-generic #48~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 7 11:24:13 UTC 2 x86_64)
Load signals (0)-(250013500) time 0.028210 0.156188 0.001739 delta 151891968 151891968 total 438681600 438681600
Write signals (0)-(250013500) time 0.047141 0.047140 0.000000 delta 0 0 total 438681600 438681600
Unload (0)-(250013500) time 0.000020 0.000019 0.000000 delta 0 0 total 438681600 438681600
au time 0.185725 0.205310 0.008924 delta 215785472 215785472 total 325173248 325173248

306
test/SIMv0.1/novas_dump.log Executable file
View File

@ -0,0 +1,306 @@
#######################################################################################
# log primitive debug message of FSDB dumping #
# This is for R&D to analyze when there are issues happening when FSDB dump #
#######################################################################################
ANF: vcsd_get_serial_mode_status('./simv: undefined symbol: vcsd_get_serial_mode_status')
ANF: vcsd_enable_sva_success_callback('./simv: undefined symbol: vcsd_enable_sva_success_callback')
ANF: vcsd_disable_sva_success_callback('./simv: undefined symbol: vcsd_disable_sva_success_callback')
ANF: vcsd_get_power_scope_name('./simv: undefined symbol: vcsd_get_power_scope_name')
ANF: vcsd_begin_no_value_var_info('./simv: undefined symbol: vcsd_begin_no_value_var_info')
ANF: vcsd_end_no_value_var_info('./simv: undefined symbol: vcsd_end_no_value_var_info')
ANF: vcsd_remove_xprop_merge_mode_callback('./simv: undefined symbol: vcsd_remove_xprop_merge_mode_callback')
ANF: vhpi_get_cb_info('./simv: undefined symbol: vhpi_get_cb_info')
ANF: vhpi_free_handle('./simv: undefined symbol: vhpi_free_handle')
ANF: vhpi_fetch_vcsd_handle('./simv: undefined symbol: vhpi_fetch_vcsd_handle')
ANF: vhpi_fetch_vpi_handle('./simv: undefined symbol: vhpi_fetch_vpi_handle')
ANF: vhpi_has_verilog_parent('./simv: undefined symbol: vhpi_has_verilog_parent')
ANF: vhpi_is_verilog_scope('./simv: undefined symbol: vhpi_is_verilog_scope')
ANF: scsd_xprop_is_enabled('./simv: undefined symbol: scsd_xprop_is_enabled')
ANF: scsd_xprop_sig_is_promoted('./simv: undefined symbol: scsd_xprop_sig_is_promoted')
ANF: scsd_xprop_int_xvalue('./simv: undefined symbol: scsd_xprop_int_xvalue')
ANF: scsd_xprop_bool_xvalue('./simv: undefined symbol: scsd_xprop_bool_xvalue')
ANF: scsd_xprop_enum_xvalue('./simv: undefined symbol: scsd_xprop_enum_xvalue')
ANF: scsd_xprop_register_merge_mode_cb('./simv: undefined symbol: scsd_xprop_register_merge_mode_cb')
ANF: scsd_xprop_delete_merge_mode_cb('./simv: undefined symbol: scsd_xprop_delete_merge_mode_cb')
ANF: scsd_xprop_get_merge_mode('./simv: undefined symbol: scsd_xprop_get_merge_mode')
ANF: scsd_thread_get_info('./simv: undefined symbol: scsd_thread_get_info')
ANF: scsd_thread_vc_init('./simv: undefined symbol: scsd_thread_vc_init')
ANF: scsd_master_set_delta_sync_cbk('./simv: undefined symbol: scsd_master_set_delta_sync_cbk')
ANF: scsd_fgp_get_fsdb_cores('./simv: undefined symbol: scsd_fgp_get_fsdb_cores')
ANF: scsd_fgp_get_is_cpu_affinity_disabled('./simv: undefined symbol: scsd_fgp_get_is_cpu_affinity_disabled')
ANF: vhdi_dt_get_type('./simv: undefined symbol: vhdi_dt_get_type')
ANF: vhdi_dt_get_key('./simv: undefined symbol: vhdi_dt_get_key')
ANF: vhdi_dt_get_vhdl_enum_info('./simv: undefined symbol: vhdi_dt_get_vhdl_enum_info')
ANF: vhdi_dt_get_vhdl_physical_info('./simv: undefined symbol: vhdi_dt_get_vhdl_physical_info')
ANF: vhdi_dt_get_vhdl_array_info('./simv: undefined symbol: vhdi_dt_get_vhdl_array_info')
ANF: vhdi_dt_get_vhdl_record_info('./simv: undefined symbol: vhdi_dt_get_vhdl_record_info')
ANF: vhdi_def_traverse_module('./simv: undefined symbol: vhdi_def_traverse_module')
ANF: vhdi_def_traverse_scope('./simv: undefined symbol: vhdi_def_traverse_scope')
ANF: vhdi_def_traverse_variable('./simv: undefined symbol: vhdi_def_traverse_variable')
ANF: vhdi_def_get_module_id_by_vhpi('./simv: undefined symbol: vhdi_def_get_module_id_by_vhpi')
ANF: vhdi_def_get_handle_by_module_id('./simv: undefined symbol: vhdi_def_get_handle_by_module_id')
ANF: vhdi_def_get_variable_info_by_vhpi('./simv: undefined symbol: vhdi_def_get_variable_info_by_vhpi')
ANF: vhdi_def_free('./simv: undefined symbol: vhdi_def_free')
ANF: vhdi_ist_traverse_scope('./simv: undefined symbol: vhdi_ist_traverse_scope')
ANF: vhdi_ist_traverse_variable('./simv: undefined symbol: vhdi_ist_traverse_variable')
ANF: vhdi_ist_convert_by_vhpi('./simv: undefined symbol: vhdi_ist_convert_by_vhpi')
ANF: vhdi_ist_clone('./simv: undefined symbol: vhdi_ist_clone')
ANF: vhdi_ist_free('./simv: undefined symbol: vhdi_ist_free')
ANF: vhdi_ist_hash_key('./simv: undefined symbol: vhdi_ist_hash_key')
ANF: vhdi_ist_compare('./simv: undefined symbol: vhdi_ist_compare')
ANF: vhdi_ist_get_value_addr('./simv: undefined symbol: vhdi_ist_get_value_addr')
ANF: vhdi_set_scsd_callback('./simv: undefined symbol: vhdi_set_scsd_callback')
ANF: vhdi_cbk_set_force_callback('./simv: undefined symbol: vhdi_cbk_set_force_callback')
ANF: vhdi_trigger_init_force('./simv: undefined symbol: vhdi_trigger_init_force')
ANF: vhdi_ist_check_scsd_callback('./simv: undefined symbol: vhdi_ist_check_scsd_callback')
ANF: vhdi_ist_add_scsd_callback('./simv: undefined symbol: vhdi_ist_add_scsd_callback')
ANF: vhdi_ist_remove_scsd_callback('./simv: undefined symbol: vhdi_ist_remove_scsd_callback')
ANF: vhdi_ist_get_scsd_user_data('./simv: undefined symbol: vhdi_ist_get_scsd_user_data')
ANF: vhdi_add_time_change_callback('./simv: undefined symbol: vhdi_add_time_change_callback')
ANF: vhdi_get_real_value_by_value_addr('./simv: undefined symbol: vhdi_get_real_value_by_value_addr')
ANF: vhdi_get_64_value_by_value_addr('./simv: undefined symbol: vhdi_get_64_value_by_value_addr')
ANF: vhdi_xprop_inst_is_promoted('./simv: undefined symbol: vhdi_xprop_inst_is_promoted')
ANF: vdi_ist_convert_by_vhdi('./simv: undefined symbol: vdi_ist_convert_by_vhdi')
ANF: vhdi_ist_get_module_id('./simv: undefined symbol: vhdi_ist_get_module_id')
ANF: vhdi_refine_foreign_scope_type('./simv: undefined symbol: vhdi_refine_foreign_scope_type')
ANF: vhdi_flush_callback('./simv: undefined symbol: vhdi_flush_callback')
ANF: vhdi_set_orig_name('./simv: undefined symbol: vhdi_set_orig_name')
ANF: vhdi_set_dump_pt('./simv: undefined symbol: vhdi_set_dump_pt')
ANF: vhdi_get_fsdb_option('./simv: undefined symbol: vhdi_get_fsdb_option')
ANF: vhdi_fgp_get_mode('./simv: undefined symbol: vhdi_fgp_get_mode')
ANF: vhdi_node_register_composite_var('./simv: undefined symbol: vhdi_node_register_composite_var')
ANF: vhdi_node_analysis('./simv: undefined symbol: vhdi_node_analysis')
ANF: vhdi_node_id('./simv: undefined symbol: vhdi_node_id')
ANF: vhdi_node_ist_check_scsd_callback('./simv: undefined symbol: vhdi_node_ist_check_scsd_callback')
ANF: vhdi_node_ist_add_scsd_callback('./simv: undefined symbol: vhdi_node_ist_add_scsd_callback')
ANF: vhdi_node_ist_get_value_addr('./simv: undefined symbol: vhdi_node_ist_get_value_addr')
ANF: vhdi_enc_def_traverse_module('./simv: undefined symbol: vhdi_enc_def_traverse_module')
ANF: vhdi_enc_def_traverse_scope('./simv: undefined symbol: vhdi_enc_def_traverse_scope')
ANF: vhdi_enc_def_traverse_variable('./simv: undefined symbol: vhdi_enc_def_traverse_variable')
ANF: vhdi_enc_ist_traverse_scope('./simv: undefined symbol: vhdi_enc_ist_traverse_scope')
ANF: vhdi_enc_ist_traverse_variable('./simv: undefined symbol: vhdi_enc_ist_traverse_variable')
ANF: vhdi_enc_ist_get_module_id('./simv: undefined symbol: vhdi_enc_ist_get_module_id')
ANF: vhdi_enc_def_get_handle_by_module_id('./simv: undefined symbol: vhdi_enc_def_get_handle_by_module_id')
VCS compile option:
option[0]: ./simv
option[1]: /home/kumon/Synopsys/vcs/T-2022.06/linux64/bin/vcs1
option[2]: -Mcc=gcc
option[3]: -Mcplusplus=g++
option[4]: -Masflags=
option[5]: -Mcfl= -pipe -fPIC -O -I/home/kumon/Synopsys/vcs/T-2022.06/include
option[6]: -Mxllcflags=
option[7]: -Mxcflags= -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include
option[8]: -Mldflags= -rdynamic
option[9]: -Mout=simv
option[10]: -Mamsrun=
option[11]: -Mvcsaceobjs=
option[12]: -Mobjects= /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvirsim.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/liberrorinf.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libsnpsmalloc.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvfs.so /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a
option[13]: -Mexternalobj=
option[14]: -Msaverestoreobj=/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcs_save_restore_new.o
option[15]: -Mcrt0=
option[16]: -Mcrtn=
option[17]: -Mcsrc=
option[18]: -Mupdate
option[19]: -Msyslibs=/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a -ldl -lm
option[20]: -l
option[21]: ./vcs.log
option[22]: -o
option[23]: simv
option[24]: +v2k
option[25]: +libext+.v+.V+.sv+.svh
option[26]: -debug_access
option[27]: +vpi
option[28]: +vcsd1
option[29]: +itf+/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcsdp_lite.tab
option[30]: -timescale=1ns/1ps
option[31]: -P
option[32]: /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
option[33]: -top
option[34]: Tb_Sync_FIFO
option[35]: -full64
option[36]: -debug_access+all+bc
option[37]: -debug_region+cell
option[38]: +vcs+initreg+random
option[39]: +notimingcheck
option[40]: -ucli
option[41]: -error=IWNF
option[42]: +lint=TFIPC-L
option[43]: -picarchive
option[44]: -P
option[45]: /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
option[46]: -fsdb
option[47]: -sverilog
option[48]: -gen_obj
option[49]: -f
option[50]: /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/file_list/asic_fun_sim.f
option[51]: -load
option[52]: /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/libnovas.so:FSDBDumpCmd
option[53]: timescale=1ns/1ps
Chronologic Simulation VCS Release T-2022.06_Full64
Linux 6.8.0-48-generic #48~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 7 11:24:13 UTC 2 x86_64
CPU cores: 32
Limit information:
======================================
cputime unlimited
filesize unlimited
datasize unlimited
stacksize 8192 kbytes
coredumpsize unlimited
memoryuse unlimited
vmemoryuse unlimited
descriptors 1048576
memorylocked 8192 kbytes
maxproc unlimited
======================================
(Special)Runtime environment variables:
Runtime environment variables:
SYNOPSYS_HOME=/home/kumon/Synopsys/syn/R-2020.09-SP4
SYNOPSYS_LC_ROOT=/home/kumon/Synopsys/lc/R-2020.09-SP3
MANPATH=/opt/rh/devtoolset-11/root/usr/share/man
SYNOPSYS_TMAX=/home/kumon/Synopsys/txs/R-2020.09-SP4
RTLA_HOME=/home/kumon/Synopsys/rtla/U-2022.12-SP1
HOSTNAME=EDA-VM3
MC2_HOME_2010_04_00=/home/kumon/TSMC/MC2/MC2_2010.04.00.b
TERM=xterm
MC2_HOME_DEFAULT=/home/kumon/TSMC/MC2/MC2_2012.02.00.d
MAKEFLAGS=
PERL5LIB=/root/perl5/lib/perl5:
QTDIR=/usr/lib64/qt-3.3
OLDPWD=/home/icer/Project/ASICs/virtual_project/sync_fifo_flow
PERL_MB_OPT=--install_base /root/perl5
QTINC=/usr/lib64/qt-3.3/include
QT_GRAPHICSSYSTEM_CHECKED=1
PCP_DIR=/opt/rh/devtoolset-11/root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
LD_LIBRARY_PATH=/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64:/opt/rh/devtoolset-11/root/usr/lib64:/opt/rh/devtoolset-11/root/usr/lib:/opt/rh/devtoolset-11/root/usr/lib64/dyninst:/opt/rh/devtoolset-11/root/usr/lib/dyninst
MAKE_TERMOUT=/dev/pts/5
DVE_HOME=/home/kumon/Synopsys/vcs/T-2022.06
MAKELEVEL=1
SNPSLMD_LICENSE_FILE=27000@EDA-VM3
MFLAGS=
TMAX_HOME=/home/kumon/Synopsys/txs/R-2020.09-SP4
VC_STATIC_HOME=/home/kumon/Synopsys/vc_static/T-2022.06-SP2
PATH=/opt/rh/devtoolset-11/root/usr/bin:/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/kumon/Synopsys/lc/R-2020.09-SP3/bin:/home/kumon/Synopsys/lc/R-2020.09-SP3/admin/install/lc/bin:/home/kumon/Synopsys/vcs/T-2022.06/bin:/home/kumon/Synopsys/vcs/T-2022.06/bin:/home/kumon/Synopsys/verdi/T-2022.06/bin:/home/kumon/Synopsys/spyglass/T-2022.06-1/SPYGLASS_HOME/bin:/home/kumon/Synopsys/syn/R-2020.09-SP4/bin:/home/kumon/Synopsys/icc2/T-2022.03/bin:/home/kumon/Synopsys/prime/U-2022.12/bin:/home/kumon/Synopsys/starrc/O-2018.06-SP1/bin:/home/kumon/Synopsys/icvalidator/O-2018.12-SP2-10/bin:/home/kumon/Synopsys/scl/2024.06/linux64/bin:/home/kumon/Synopsys/vc_static/T-2022.06-SP2/bin:/home/kumon/Synopsys/txs/R-2020.09-SP4/bin:/home/kumon/Synopsys/fusioncompiler/O-2018.06-SP4/bin:/home/kumon/Synopsys/rtla/U-2022.12-SP1/bin:/home/kumon/Synopsys/embedit/Q-2020.03-SP1/bin
STARRC_HOME=/home/kumon/Synopsys/starrc/O-2018.06-SP1
PT_HOME=/home/kumon/Synopsys/prime/U-2022.12
SNPSLMD_QUEUE=1
VERDI_HOME=/home/kumon/Synopsys/verdi/T-2022.06
PWD=/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1
VCS_HOME=/home/kumon/Synopsys/vcs/T-2022.06
LANG=en_US.UTF-8
KDEDIRS=/usr
VCS_ARCH_OVERRIDE=linux
EMBEDIT_HOME=/home/kumon/Synopsys/embedit/Q-2020.03-SP1
ICV_HOME=/home/kumon/Synopsys/icvalidator/O-2018.12-SP2-10
HOME=/root
SHLVL=2
ICC2_HOME=/home/kumon/Synopsys/icc2/T-2022.03
PERL_LOCAL_LIB_ROOT=:/root/perl5
DC_HOME=/home/kumon/Synopsys/syn/R-2020.09-SP4
MAKE_TERMERR=/dev/pts/5
SPYGLASS_HOME=/home/kumon/Synopsys/spyglass/T-2022.06-1/SPYGLASS_HOME
QTLIB=/usr/lib64/qt-3.3/lib
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
MC2_HOME_2007_11_00=/home/kumon/TSMC/MC2/MC2_2007.11.00
FUSIONCOMPILER_HOME=/home/kumon/Synopsys/fusioncompiler/O-2018.06-SP4
LESSOPEN=||/usr/bin/lesspipe.sh %s
PKG_CONFIG_PATH=/opt/rh/devtoolset-11/root/usr/lib64/pkgconfig
SCL_HOME=/home/kumon/Synopsys/scl/2024.06
INFOPATH=/opt/rh/devtoolset-11/root/usr/share/info
DISPLAY=host.docker.internal:0
LC_HOME=/home/kumon/Synopsys/lc/R-2020.09-SP3
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins
MC2_HOME_2012_02_00=/home/kumon/TSMC/MC2/MC2_2012.02.00.d
PERL_MM_OPT=INSTALL_BASE=/root/perl5
_=./simv
VCS_PATHMAP_PRELOAD_DONE=1
VCS_STACK_EXEC=true
VCS_EXEC_DONE=1
LC_ALL=C
DVE=/home/kumon/Synopsys/vcs/T-2022.06/gui/dve
SPECMAN_OUTPUT_TO_TTY=1
FLEXLM_BORROWFILE=/root/.EDA-VM3-borrow.txt
Runtime command line arguments:
argv[0]=./simv
225 profile - 100
CPU/Mem usage: 0.030 sys, 0.110 user, 397.73M mem
226 Elapsed time: 0:01:09 Tue Nov 26 20:51:01 2024
227 User CPU time used: 0 seconds
228 System CPU time used: 0 seconds
229 pliAppInit
230 [SC]Init: MemoryConsumed=0.00MB ElapsedTime=0hour 0min. 0sec.
231 FSDB_GATE is set.
232 FSDB_RTL is set.
233 FSDB_ALIAS_ARRAY_ELEM is set to 4294967295.
234 Enable Parallel Dumping.
235 pliAppMiscSet: New Sim Round
236 pliEntryInit
237 LIBSSCORE=found /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/lib/LINUXAMD64/libsscore_vcs202206.so through $NOVAS_HOME setting.
238 FSDB Dumper for VCS, Release Verdi_T-2022.06, Linux x86_64/64bit, 05/29/2022
239 (C) 1996 - 2022 by Synopsys, Inc.
240 sps_call_fsdbDumpfile_main at 0 : /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/Tb_Sync_FIFO.sv(49)
241 argv[0]: (Tb_Sync_FIFO.fsdb)
242 *Verdi* : Create FSDB file 'Tb_Sync_FIFO.fsdb'
243 [spi_vcs_vd_ppi_create_root]: no upf option
244 compile option from '/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/vcs_rebuild'.
245 "vcs '-f' '/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/file_list/asic_fun_sim.f' '-o' 'simv' '-l' './vcs.log' '+v2k' '+libext+.v+.V+.sv+.svh' '-sverilog' '-debug_access' '-timescale=1ns/1ps' '-P' '/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab' '/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a' '-top' 'Tb_Sync_FIFO' '-full64' '-debug_all' '+vcs+initreg+random' '+notimingcheck' '-Mupdate' '-ucli' '-error=IWNF' '+lint=TFIPC-L' 2>&1"
246 DVDI_is_vir_unload_enabled is enable
247 FSDB_VCS_ENABLE_NATIVE_VC is enable
248 sps_call_fsdbDumpvars_vd_main at 0 : /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/Tb_Sync_FIFO.sv(50)
249 argv[0]: (0)
250 *Verdi* : Begin traversing the scopes, layer (0).
251 *Verdi* : End of traversing.
252 pliAppHDL_DumpVarComplete traverse var: profile -
CPU/Mem usage: 0.040 sys, 0.110 user, 497.27M mem
incr: 0.010 sys, 0.000 user, 7.92M mem
accu: 0.010 sys, 0.000 user, 7.92M mem
accu incr: 0.010 sys, 0.000 user, 7.92M mem
Count usage: 98 var, 88 idcode, 51 callback
incr: 98 var, 88 idcode, 51 callback
accu: 98 var, 88 idcode, 51 callback
accu incr: 98 var, 88 idcode, 51 callback
253 Elapsed time: 0:01:09 Tue Nov 26 20:51:01 2024
254 User CPU time used: 0 seconds
255 System CPU time used: 0 seconds
256 pliAppHDL_DumpVarComplete: profile -
CPU/Mem usage: 0.040 sys, 0.110 user, 498.32M mem
incr: 0.000 sys, 0.000 user, 1.05M mem
accu: 0.010 sys, 0.000 user, 8.97M mem
accu incr: 0.000 sys, 0.000 user, 1.05M mem
Count usage: 98 var, 88 idcode, 51 callback
incr: 0 var, 0 idcode, 0 callback
accu: 98 var, 88 idcode, 51 callback
accu incr: 0 var, 0 idcode, 0 callback
257 Elapsed time: 0:01:09 Tue Nov 26 20:51:01 2024
258 User CPU time used: 0 seconds
259 System CPU time used: 0 seconds
260 End of simulation at 250013500
261 Memory usage: 506.716 M
262 Maximum resident set size: 114 MB
263 Hard page faults: 7
264 Soft page faults: 18928
265 Elapsed time: 0:01:09 Tue Nov 26 20:51:01 2024
266 User CPU time used: 0 seconds
267 System CPU time used: 0 seconds
268 Begin FSDB profile info:
269 FSDB Writer : bc1(91000) bcn(60290) mtf/stf(0/0)
FSDB Writer elapsed time : flush(0.017533) io wait(0.000000) theadpool wait(0.000000)
FSDB Writer cpu time : MT Compression : 0
270 End FSDB profile info
271 FSDB closed. Name: Tb_Sync_FIFO.fsdb Size: 156855
272 Parallel profile - ProducerThread:1 ConsumerThread:1 Buffer:64MB
273 - BlockUsed:3 Acquire:182084 BufferUsed:2285857
274 - Flush:3 Expand:0 ProducerWait:0 ConsumerWait:1
275 - MainProducerTime:0.207860268 TotalConsumerTime:0.004160955
276 - ElapsedTime:0.137197000
277 Producer 0 profile - BlockUsed:3 Acquire:182084 BufferUsed:2285857
278 Consumer 0 profile - Affinity:-1 CPUTime:0.004160955 LifeTime:0.013474738 (0.31%)
279 - BlockUsed:3 Acquire:182084 BufferUsed:2285857
280 SimExit
281 Elapsed time: 0:01:09 Tue Nov 26 20:51:01 2024
282 User CPU time used: 0 seconds
283 System CPU time used: 0 seconds
284 Sim process exit

4955
test/SIMv0.1/rdata.txt Executable file

File diff suppressed because it is too large Load Diff

BIN
test/SIMv0.1/simv Executable file

Binary file not shown.

View File

View File

View File

@ -0,0 +1,132 @@
0
50
+itf+/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcsdp_lite.tab
+libext+.v+.V+.sv+.svh
+lint=TFIPC-L
+notimingcheck
+v2k
+vcs+initreg+random
+vcsd1
+vpi
-Mamsrun=
-Masflags=
-Mcc=gcc
-Mcfl= -pipe -fPIC -O -I/home/kumon/Synopsys/vcs/T-2022.06/include
-Mcplusplus=g++
-Mcrt0=
-Mcrtn=
-Mcsrc=
-Mexternalobj=
-Mldflags= -rdynamic
-Mobjects= /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvirsim.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/liberrorinf.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libsnpsmalloc.so /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvfs.so /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a
-Mout=simv
-Msaverestoreobj=/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcs_save_restore_new.o
-Msyslibs=/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a -ldl -lm
-Mupdate
-Mvcsaceobjs=
-Mxcflags= -pipe -fPIC -I/home/kumon/Synopsys/vcs/T-2022.06/include
-Mxllcflags=
-P
-P
-debug_access
-debug_access+all+bc
-debug_region+cell
-error=IWNF
-f /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/file_list/asic_fun_sim.f
-fsdb
-full64
-gen_obj
-l
-o simv
-picarchive
-sverilog
-timescale=1ns/1ps
-top
-ucli
/home/kumon/Synopsys/vcs/T-2022.06/linux64/bin/vcs1
./vcs.log
simv
/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
Tb_Sync_FIFO
/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/file_list/asic_fun_sim.f
61
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
VMR_MODE_FLAG=64
VERDI_HOME=/home/kumon/Synopsys/verdi/T-2022.06
VC_STATIC_HOME=/home/kumon/Synopsys/vc_static/T-2022.06-SP2
VCS_PATHMAP_PRELOAD_DONE=1
VCS_MX_HOME_INTERNAL=1
VCS_MODE_FLAG=64
VCS_LOG_FILE=./vcs.log
VCS_HOME=/home/kumon/Synopsys/vcs/T-2022.06
VCS_EXEC_DONE=1
VCS_DEPTH=0
VCS_ARG_ADDED_FOR_TMP=1
VCS_ARCH_OVERRIDE=linux
VCS_ARCH=linux64
UNAME=/bin/uname
TOOL_HOME=/home/kumon/Synopsys/vcs/T-2022.06/linux64
TMAX_HOME=/home/kumon/Synopsys/txs/R-2020.09-SP4
SYNOPSYS_TMAX=/home/kumon/Synopsys/txs/R-2020.09-SP4
SYNOPSYS_LC_ROOT=/home/kumon/Synopsys/lc/R-2020.09-SP3
SYNOPSYS_HOME=/home/kumon/Synopsys/syn/R-2020.09-SP4
STARRC_HOME=/home/kumon/Synopsys/starrc/O-2018.06-SP1
SPYGLASS_HOME=/home/kumon/Synopsys/spyglass/T-2022.06-1/SPYGLASS_HOME
SNPS_VCS_CLANG_PATH=/home/kumon/Synopsys/vcs/T-2022.06/linux64/clang
SNPS_INTERNAL_VCS_LINUX_OS=linux
SNPSLMD_QUEUE=1
SCRNAME=vcs
SCRIPT_NAME=vcs
SCL_HOME=/home/kumon/Synopsys/scl/2024.06
RTLA_HOME=/home/kumon/Synopsys/rtla/U-2022.12-SP1
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins
QT_GRAPHICSSYSTEM_CHECKED=1
QTLIB=/usr/lib64/qt-3.3/lib
QTINC=/usr/lib64/qt-3.3/include
QTDIR=/usr/lib64/qt-3.3
PT_HOME=/home/kumon/Synopsys/prime/U-2022.12
PKG_CONFIG_PATH=/opt/rh/devtoolset-11/root/usr/lib64/pkgconfig
PERL_MM_OPT=INSTALL_BASE=/root/perl5
PERL_MB_OPT=--install_base /root/perl5
PERL_LOCAL_LIB_ROOT=:/root/perl5
PERL5LIB=/root/perl5/lib/perl5:
PCP_DIR=/opt/rh/devtoolset-11/root
OVA_UUM=0
MFLAGS=
MC2_HOME_DEFAULT=/home/kumon/TSMC/MC2/MC2_2012.02.00.d
MC2_HOME_2012_02_00=/home/kumon/TSMC/MC2/MC2_2012.02.00.d
MC2_HOME_2010_04_00=/home/kumon/TSMC/MC2/MC2_2010.04.00.b
MC2_HOME_2007_11_00=/home/kumon/TSMC/MC2/MC2_2007.11.00
MAKE_TERMOUT=/dev/pts/5
MAKE_TERMERR=/dev/pts/5
MAKELEVEL=1
MAKEFLAGS=
LESSOPEN=||/usr/bin/lesspipe.sh %s
LC_HOME=/home/kumon/Synopsys/lc/R-2020.09-SP3
LC_ALL=C
KDEDIRS=/usr
ICV_HOME=/home/kumon/Synopsys/icvalidator/O-2018.12-SP2-10
ICC2_HOME=/home/kumon/Synopsys/icc2/T-2022.03
FUSIONCOMPILER_HOME=/home/kumon/Synopsys/fusioncompiler/O-2018.06-SP4
EMBEDIT_HOME=/home/kumon/Synopsys/embedit/Q-2020.03-SP1
DVE_HOME=/home/kumon/Synopsys/vcs/T-2022.06
DC_HOME=/home/kumon/Synopsys/syn/R-2020.09-SP4
0
0
7
1732622616 /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/src/tem5n28hpcplvta64x20m4swbso_110a_tt0p9v25c.v
1732624198 /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/src/Sync_FIFO.sv
1732625191 /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/Tb_Sync_FIFO.sv
1732624715 /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/file_list/asic_fun_sim.f
1653825972 /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
1653825972 /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
1654052745 /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/vcsdp_lite.tab
5
1654054205 /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvirsim.so
1654053585 /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/liberrorinf.so
1654053489 /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libsnpsmalloc.so
1654053565 /home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/libvfs.so
1653824934 /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a
1732625392 simv.daidir
-1 partitionlib

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,4 @@
#!/bin/sh -e
# This file is automatically generated by VCS. Any changes you make
# to it will be overwritten the next time VCS is run.
vcs '-f' '/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/file_list/asic_fun_sim.f' '-o' 'simv' '-l' './vcs.log' '+v2k' '+libext+.v+.V+.sv+.svh' '-sverilog' '-debug_access' '-timescale=1ns/1ps' '-P' '/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab' '/home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/pli.a' '-top' 'Tb_Sync_FIFO' '-full64' '-debug_all' '+vcs+initreg+random' '+notimingcheck' '-Mupdate' '-ucli' '-error=IWNF' '+lint=TFIPC-L' -static_dbgen_only -daidir=$1 2>&1

View File

@ -0,0 +1,9 @@
sid Tb_Sync_FIFO
bcid 0 0 WIDTH,7 CALL_ARG_VAL,2,0 CALL_ARG_VAL,3,0 SUBTRACT RET
bcid 1 1 WIDTH,7 CALL_ARG_VAL,2,0 OPT_CONST,64 WIDTH,1 M_EQU WIDTH,7 CALL_ARG_VAL,2,0 OPT_CONST,63 WIDTH,1 M_EQU CALL_ARG_VAL,3,0 CALL_ARG_VAL,4,0 NOT AND AND OR RET
bcid 2 2 WIDTH,7 CALL_ARG_VAL,2,0 OPT_CONST,0 WIDTH,1 M_EQU WIDTH,7 CALL_ARG_VAL,2,0 OPT_CONST,1 WIDTH,1 M_EQU OR RET
bcid 3 3 WIDTH,7 CALL_ARG_VAL,2,0 WIDTH,6 CALL_ARG_VAL,3,0 WIDTH,7 PAD WIDTH,1 M_GE WIDTH,7 CALL_ARG_VAL,2,0 WIDTH,32 PAD WIDTH,6 CALL_ARG_VAL,3,0 WIDTH,32 PAD OPT_CONST,1 SUBTRACT WIDTH,1 M_EQU OR RET
bcid 4 4 WIDTH,7 CALL_ARG_VAL,2,0 WIDTH,6 CALL_ARG_VAL,3,0 WIDTH,7 PAD WIDTH,1 M_LE WIDTH,7 CALL_ARG_VAL,2,0 WIDTH,32 PAD WIDTH,6 CALL_ARG_VAL,3,0 WIDTH,32 PAD OPT_CONST,1 ADD WIDTH,1 M_EQU OR RET
bcid 5 5 WIDTH,1 CALL_ARG_VAL,2,0 OPT_CONST,1 EQU CALL_ARG_VAL,3,0 CALL_ARG_VAL,2,0 OPT_CONST,0 EQU CALL_ARG_VAL,4,0 OPT_CONST_4ST,1,1 MITECONDNOINSTR,4 MITECONDNOINSTR,4 RET
bcid 6 6 WIDTH,1 CALL_ARG_VAL,2,0 OPT_CONST,1 EQU WIDTH,6 CALL_ARG_VAL,3,0 WIDTH,1 CALL_ARG_VAL,2,0 OPT_CONST,0 EQU WIDTH,6 CALL_ARG_VAL,4,0 OPT_CONST_4ST,63,63 MITECONDNOINSTR,4 MITECONDNOINSTR,4 RET
bcid 7 7 WIDTH,1 CALL_ARG_VAL,2,0 WIDTH,20 CALL_ARG_VAL,3,0 CALL_ARG_VAL,4,0 MITECONDNOINSTR,4 RET

View File

@ -0,0 +1,2 @@
Dummy_file
Missing line/file info

View File

@ -0,0 +1,20 @@
{
"std": [
"std",
"reYIK",
"module",
1
],
"Tb_Sync_FIFO": [
"Tb_Sync_FIFO",
"g97qF",
"module",
2
],
"...MASTER...": [
"SIM",
"amcQw",
"module",
3
]
}

View File

View File

@ -0,0 +1,4 @@
T-2022.06_Full64
Build Date = May 31 2022 20:26:29
RedHat
Compile Location: /home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,9 @@
#!/bin/sh -h
PYTHONHOME=/home/kumon/Synopsys/vcs/T-2022.06/etc/search/pyh
export PYTHONHOME
PYTHONPATH=/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/pylib27
export PYTHONPATH
LD_LIBRARY_PATH=/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib:/home/kumon/Synopsys/vcs/T-2022.06/linux64/lib/pylib27
export LD_LIBRARY_PATH
/home/kumon/Synopsys/vcs/T-2022.06/linux64/bin/vcsfind_create_index.exe -z "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/./idents_tapi.xml.gz" -o "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.db_tmp"
\mv "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.db_tmp" "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.db"

View File

@ -0,0 +1,57 @@
#!/bin/sh -h
FILE_PATH="/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch"
lockfile="${FILE_PATH}"/lock
FSearch_lock_release() {
echo "" > /dev/null
}
create_fsearch_db_ctrl() {
if [ -s "${FILE_PATH}"/fsearch.stat ]; then
if [ -s "${FILE_PATH}"/fsearch.log ]; then
echo "ERROR building identifier database failed. Check ${FILE_PATH}/fsearch.log"
else
cat "${FILE_PATH}"/fsearch.stat
fi
return
fi
nohup "$1" > "${FILE_PATH}"/fsearch.log 2>&1 193>/dev/null &
MY_PID=`echo $!`
BUILDER="pid ${MY_PID} ${USER}@${hostname}"
echo "INFO Started building database for Identifiers, please wait ($BUILDER). Use VCS elab option '-debug_access+idents_db' to build the database earlier."
echo "INFO Still building database for Identifiers, please wait ($BUILDER). Use VCS elab option '-debug_access+idents_db' to build the database earlier." > "${FILE_PATH}"/fsearch.stat
return
}
dir_name=`/bin/dirname "$0"`
if [ "${dir_name}" = "." ]; then
cd $dir_name
dir_name=`/bin/pwd`
fi
if [ -d "$dir_name"/../../../../../../../../../../.. ]; then
cd "$dir_name"/../../../../../../../../../../..
fi
if [ -f "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/.create_fsearch_db" ]; then
if [ ! -f "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.db" ]; then
if [ "$#" -eq 1 ] && [ "x$1" == "x-background" ]; then
trap FSearch_lock_release EXIT
(
flock 193
create_fsearch_db_ctrl "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/.create_fsearch_db"
exit 193
) 193> "$lockfile"
rstat=$?
if [ "${rstat}"x != "193x" ]; then
exit $rstat
fi
else
"/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/.create_fsearch_db"
if [ -f "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.stat" ]; then
rm -f "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.stat"
fi
fi
elif [ -f "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.stat" ]; then
rm -f "/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/prj/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.stat"
fi
fi

View File

@ -0,0 +1,3 @@
/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/sim/Tb_Sync_FIFO.sv
/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/src/Sync_FIFO.sv
/home/icer/Project/ASICs/virtual_project/sync_fifo_flow/user/src/tem5n28hpcplvta64x20m4swbso_110a_tt0p9v25c.v

View File

@ -0,0 +1 @@


Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,138 @@
pli $fsdbDumpvars novas_call_fsdbDumpvars - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpvarsES novas_call_fsdbDumpvarsES - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMDA novas_call_fsdbDumpMDA - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpSVA novas_call_fsdbDumpSVA - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpvarsByFile novas_call_fsdbDumpvarsByFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbSuppress novas_call_fsdbSuppress - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpon novas_call_fsdbDumpon - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpoff novas_call_fsdbDumpoff - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbSwitchDumpfile novas_call_fsdbSwitchDumpfile - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpfile novas_call_fsdbDumpfile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbAutoSwitchDumpfile novas_call_fsdbAutoSwitchDumpfile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpFinish novas_call_fsdbDumpFinish - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpflush novas_call_fsdbDumpflush - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbLog novas_call_fsdbLog - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbAddRuntimeSignal novas_call_fsdbAddRuntimeSignal - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpSC novas_call_fsdbDumpSC - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpvarsToFile novas_call_fsdbDumpvarsToFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_create_transaction_stream novas_call_sps_create_transaction_stream - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_begin_transaction novas_call_sps_begin_transaction - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_end_transaction novas_call_sps_end_transaction - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_free_transaction novas_call_sps_free_transaction - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_add_attribute novas_call_sps_add_attribute - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_update_label novas_call_sps_update_label - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_add_relation novas_call_sps_add_relation - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbWhatif novas_call_fsdbWhatif - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $paa_init novas_call_paa_init - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $paa_sync novas_call_paa_sync - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpClassMethod novas_call_fsdbDumpClassMethod - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbSuppressClassMethod novas_call_fsdbSuppressClassMethod - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbSuppressClassProp novas_call_fsdbSuppressClassProp - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMDAByFile novas_call_fsdbDumpMDAByFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_create_stream_begin novas_call_fsdbEvent_create_stream_begin - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_define_attribute novas_call_fsdbEvent_add_stream_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_create_stream_end novas_call_fsdbEvent_create_stream_end - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_begin novas_call_fsdbEvent_begin - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_set_label novas_call_fsdbEvent_set_label - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_add_attribute novas_call_fsdbEvent_add_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_add_tag novas_call_fsdbEvent_add_tag - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_end novas_call_fsdbEvent_end - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_add_relation novas_call_fsdbEvent_add_relation - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_get_error_code novas_call_fsdbEvent_get_error_code - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_add_stream_attribute novas_call_fsdbTrans_add_stream_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_add_scope_attribute novas_call_fsdbTrans_add_scope_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_interactive novas_call_sps_interactive - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_test novas_call_sps_test - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpClassObject novas_call_fsdbDumpClassObject - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpClassObjectByFile novas_call_fsdbDumpClassObjectByFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbTrans_add_attribute_expand novas_call_fsdbEvent_add_attribute_expand - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $ridbDump novas_call_ridbDump - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $sps_flush_file novas_call_sps_flush_file - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpPSL novas_call_fsdbDumpPSL - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDisplay novas_call_fsdbDisplay - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumplimit novas_call_fsdbDumplimit - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMem novas_call_fsdbDumpMem - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMemNow novas_call_fsdbDumpMemNow - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMemInScope novas_call_fsdbDumpMemInScope - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMDANow novas_call_fsdbDumpMDANow - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMDAOnChange novas_call_fsdbDumpMDAOnChange - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMDAInScope novas_call_fsdbDumpMDAInScope - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpMemInFile novas_call_fsdbDumpMemInFile - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpPSLon novas_call_fsdbDumpPSLon - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpPSLoff novas_call_fsdbDumpPSLoff - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpSVAon novas_call_fsdbDumpSVAon - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpSVAoff novas_call_fsdbDumpSVAoff - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpStrength novas_call_fsdbDumpStrength - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpSingle novas_call_fsdbDumpSingle - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpIO novas_call_fsdbDumpIO - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpPattern novas_call_fsdbDumpPattern - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbSubstituteHier novas_call_fsdbSubstituteHier - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/novas.tab
pli $fsdbDumpvars novas_call_fsdbDumpvars - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpvarsES novas_call_fsdbDumpvarsES - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMDA novas_call_fsdbDumpMDA - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpSVA novas_call_fsdbDumpSVA - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpvarsByFile novas_call_fsdbDumpvarsByFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbSuppress novas_call_fsdbSuppress - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpon novas_call_fsdbDumpon - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpoff novas_call_fsdbDumpoff - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbSwitchDumpfile novas_call_fsdbSwitchDumpfile - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpfile novas_call_fsdbDumpfile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbAutoSwitchDumpfile novas_call_fsdbAutoSwitchDumpfile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpFinish novas_call_fsdbDumpFinish - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpflush novas_call_fsdbDumpflush - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbLog novas_call_fsdbLog - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbAddRuntimeSignal novas_call_fsdbAddRuntimeSignal - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpSC novas_call_fsdbDumpSC - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpvarsToFile novas_call_fsdbDumpvarsToFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_create_transaction_stream novas_call_sps_create_transaction_stream - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_begin_transaction novas_call_sps_begin_transaction - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_end_transaction novas_call_sps_end_transaction - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_free_transaction novas_call_sps_free_transaction - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_add_attribute novas_call_sps_add_attribute - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_update_label novas_call_sps_update_label - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_add_relation novas_call_sps_add_relation - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbWhatif novas_call_fsdbWhatif - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $paa_init novas_call_paa_init - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $paa_sync novas_call_paa_sync - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpClassMethod novas_call_fsdbDumpClassMethod - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbSuppressClassMethod novas_call_fsdbSuppressClassMethod - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbSuppressClassProp novas_call_fsdbSuppressClassProp - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMDAByFile novas_call_fsdbDumpMDAByFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_create_stream_begin novas_call_fsdbEvent_create_stream_begin - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_define_attribute novas_call_fsdbEvent_add_stream_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_create_stream_end novas_call_fsdbEvent_create_stream_end - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_begin novas_call_fsdbEvent_begin - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_set_label novas_call_fsdbEvent_set_label - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_add_attribute novas_call_fsdbEvent_add_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_add_tag novas_call_fsdbEvent_add_tag - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_end novas_call_fsdbEvent_end - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_add_relation novas_call_fsdbEvent_add_relation - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_get_error_code novas_call_fsdbEvent_get_error_code - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_add_stream_attribute novas_call_fsdbTrans_add_stream_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_add_scope_attribute novas_call_fsdbTrans_add_scope_attribute - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_interactive novas_call_sps_interactive - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_test novas_call_sps_test - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpClassObject novas_call_fsdbDumpClassObject - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpClassObjectByFile novas_call_fsdbDumpClassObjectByFile - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbTrans_add_attribute_expand novas_call_fsdbEvent_add_attribute_expand - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $ridbDump novas_call_ridbDump - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $sps_flush_file novas_call_sps_flush_file - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpPSL novas_call_fsdbDumpPSL - novas_misc /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDisplay novas_call_fsdbDisplay - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumplimit novas_call_fsdbDumplimit - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMem novas_call_fsdbDumpMem - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMemNow novas_call_fsdbDumpMemNow - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMemInScope novas_call_fsdbDumpMemInScope - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMDANow novas_call_fsdbDumpMDANow - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMDAOnChange novas_call_fsdbDumpMDAOnChange - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMDAInScope novas_call_fsdbDumpMDAInScope - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpMemInFile novas_call_fsdbDumpMemInFile - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpPSLon novas_call_fsdbDumpPSLon - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpPSLoff novas_call_fsdbDumpPSLoff - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpSVAon novas_call_fsdbDumpSVAon - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpSVAoff novas_call_fsdbDumpSVAoff - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpStrength novas_call_fsdbDumpStrength - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpSingle novas_call_fsdbDumpSingle - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpIO novas_call_fsdbDumpIO - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbDumpPattern novas_call_fsdbDumpPattern - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab
pli $fsdbSubstituteHier novas_call_fsdbSubstituteHier - - /home/kumon/Synopsys/verdi/T-2022.06/share/PLI/VCS/LINUX64/verdi.tab

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More