Compare commits
10 Commits
f35f172189
...
cd74a089e4
Author | SHA1 | Date | |
---|---|---|---|
cd74a089e4 | |||
f2324479da | |||
34dc4a004d | |||
4e53d54c37 | |||
2eda8afff7 | |||
f10bd6dce6 | |||
d4f2ec5845 | |||
60c77630cd | |||
a8804d9cc0 | |||
55d5c51f29 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
17
.vscode/c_cpp_properties.json
vendored
Normal 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
62
.vscode/settings.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
59
Makefile
59
Makefile
@ -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
184
README.md
@ -1,85 +1,125 @@
|
||||
[](https://github.com/wavedrom/vcd/actions/workflows/linux-napi.yml)[](https://github.com/wavedrom/vcd/actions/workflows/linux-wasm.yml)[](https://github.com/wavedrom/vcd/actions/workflows/macos-napi.yml)[](https://github.com/wavedrom/vcd/actions/workflows/macos-wasm.yml)[](https://github.com/wavedrom/vcd/actions/workflows/windows-wasm.yml)
|
||||
[](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
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
138
backup/napi_basic.js
Normal 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
88
backup/napi_dump.js
Normal 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
79
backup/napi_events.js
Normal 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
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
135
backup/wasm_basic.js
Normal 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
98
backup/wasm_dump.js
Normal 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
83
backup/wasm_events.js
Normal 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 */
|
175
bin/build.js
175
bin/build.js
@ -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 */
|
||||
|
@ -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');
|
||||
|
@ -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
230
bin/vcd.js
Normal 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
3
deploy.sh
Normal 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
3
install.sh
Normal file
@ -0,0 +1,3 @@
|
||||
source $EMCC_HOME/emsdk_env.sh
|
||||
npm install browserify terser node-gyp -g
|
||||
npm i
|
@ -1,4 +1,6 @@
|
||||
'use strict';
|
||||
/* eslint-disable no-console */
|
||||
/* eslint-disable indent */
|
||||
|
||||
module.exports = skip => {
|
||||
let start = 0;
|
||||
|
@ -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]);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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';
|
||||
|
@ -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());
|
||||
|
@ -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;
|
||||
|
21
out/vcd.js
21
out/vcd.js
File diff suppressed because one or more lines are too long
BIN
out/vcd.wasm
BIN
out/vcd.wasm
Binary file not shown.
@ -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
BIN
test/SIMv0.1/Tb_Sync_FIFO.fsdb
Executable file
Binary file not shown.
291454
test/SIMv0.1/Tb_Sync_FIFO.vcd
Executable file
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
BIN
test/SIMv0.1/Tb_Sync_FIFO.view
Executable file
Binary file not shown.
9
test/SIMv0.1/csrc/.6834.6834.0.compview.txt
Executable file
9
test/SIMv0.1/csrc/.6834.6834.0.compview.txt
Executable 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
124
test/SIMv0.1/csrc/Makefile
Executable 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)
|
||||
|
49
test/SIMv0.1/csrc/Makefile.hsopt
Executable file
49
test/SIMv0.1/csrc/Makefile.hsopt
Executable 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
BIN
test/SIMv0.1/csrc/SIM_l.o
Executable file
Binary file not shown.
BIN
test/SIMv0.1/csrc/_7567_archive_1.so
Executable file
BIN
test/SIMv0.1/csrc/_7567_archive_1.so
Executable file
Binary file not shown.
989
test/SIMv0.1/csrc/_vcs_pli_stub_.c
Executable file
989
test/SIMv0.1/csrc/_vcs_pli_stub_.c
Executable 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
|
BIN
test/SIMv0.1/csrc/_vcs_pli_stub_.o
Executable file
BIN
test/SIMv0.1/csrc/_vcs_pli_stub_.o
Executable file
Binary file not shown.
BIN
test/SIMv0.1/csrc/archive.0/_7567_archive_1.a
Executable file
BIN
test/SIMv0.1/csrc/archive.0/_7567_archive_1.a
Executable file
Binary file not shown.
3
test/SIMv0.1/csrc/archive.0/_7567_archive_1.a.info
Executable file
3
test/SIMv0.1/csrc/archive.0/_7567_archive_1.a.info
Executable file
@ -0,0 +1,3 @@
|
||||
reYIK_d.o
|
||||
g97qF_d.o
|
||||
amcQwB.o
|
BIN
test/SIMv0.1/csrc/cgincr.sdb
Executable file
BIN
test/SIMv0.1/csrc/cgincr.sdb
Executable file
Binary file not shown.
BIN
test/SIMv0.1/csrc/cginfo.json
Executable file
BIN
test/SIMv0.1/csrc/cginfo.json
Executable file
Binary file not shown.
BIN
test/SIMv0.1/csrc/cgproc.7567.json
Executable file
BIN
test/SIMv0.1/csrc/cgproc.7567.json
Executable file
Binary file not shown.
BIN
test/SIMv0.1/csrc/checksum
Executable file
BIN
test/SIMv0.1/csrc/checksum
Executable file
Binary file not shown.
2
test/SIMv0.1/csrc/clean.sh
Executable file
2
test/SIMv0.1/csrc/clean.sh
Executable 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
31
test/SIMv0.1/csrc/filelist
Executable 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
38
test/SIMv0.1/csrc/filelist.cu
Executable 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
0
test/SIMv0.1/csrc/filelist.dpi
Executable file
13
test/SIMv0.1/csrc/filelist.hsopt
Executable file
13
test/SIMv0.1/csrc/filelist.hsopt
Executable 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
|
1
test/SIMv0.1/csrc/filelist.hsopt.llvm2_0.objs
Executable file
1
test/SIMv0.1/csrc/filelist.hsopt.llvm2_0.objs
Executable file
@ -0,0 +1 @@
|
||||
LLVM_OBJS += rmar_llvm_0_1.o rmar_llvm_0_0.o
|
7
test/SIMv0.1/csrc/filelist.hsopt.objs
Executable file
7
test/SIMv0.1/csrc/filelist.hsopt.objs
Executable 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
6
test/SIMv0.1/csrc/filelist.pli
Executable 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)
|
0
test/SIMv0.1/csrc/import_dpic.h
Executable file
0
test/SIMv0.1/csrc/import_dpic.h
Executable file
BIN
test/SIMv0.1/csrc/objs/amcQw_d.o
Executable file
BIN
test/SIMv0.1/csrc/objs/amcQw_d.o
Executable file
Binary file not shown.
0
test/SIMv0.1/csrc/product_timestamp
Executable file
0
test/SIMv0.1/csrc/product_timestamp
Executable file
46
test/SIMv0.1/csrc/rmapats.c
Executable file
46
test/SIMv0.1/csrc/rmapats.c
Executable 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
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
0
test/SIMv0.1/csrc/rmapats.m
Executable file
BIN
test/SIMv0.1/csrc/rmapats.o
Executable file
BIN
test/SIMv0.1/csrc/rmapats.o
Executable file
Binary file not shown.
BIN
test/SIMv0.1/csrc/rmapats_mop.o
Executable file
BIN
test/SIMv0.1/csrc/rmapats_mop.o
Executable file
Binary file not shown.
13
test/SIMv0.1/csrc/rmar.c
Executable file
13
test/SIMv0.1/csrc/rmar.c
Executable 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
20
test/SIMv0.1/csrc/rmar.h
Executable 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
BIN
test/SIMv0.1/csrc/rmar.o
Executable file
Binary file not shown.
13
test/SIMv0.1/csrc/rmar0.h
Executable file
13
test/SIMv0.1/csrc/rmar0.h
Executable 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
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
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
BIN
test/SIMv0.1/csrc/rmar_nd.o
Executable file
Binary file not shown.
18
test/SIMv0.1/fsdb2vcdLog/fsdb.00000.log
Executable file
18
test/SIMv0.1/fsdb2vcdLog/fsdb.00000.log
Executable 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
|
3
test/SIMv0.1/fsdb2vcdLog/pes.bat
Executable file
3
test/SIMv0.1/fsdb2vcdLog/pes.bat
Executable file
@ -0,0 +1,3 @@
|
||||
where
|
||||
detach
|
||||
quit
|
6
test/SIMv0.1/fsdb2vcdLog/turbo.log
Executable file
6
test/SIMv0.1/fsdb2vcdLog/turbo.log
Executable 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
306
test/SIMv0.1/novas_dump.log
Executable 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
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
BIN
test/SIMv0.1/simv
Executable file
Binary file not shown.
0
test/SIMv0.1/simv.daidir/.daidir_complete
Executable file
0
test/SIMv0.1/simv.daidir/.daidir_complete
Executable file
0
test/SIMv0.1/simv.daidir/.normal_done
Executable file
0
test/SIMv0.1/simv.daidir/.normal_done
Executable file
132
test/SIMv0.1/simv.daidir/.vcs.timestamp
Executable file
132
test/SIMv0.1/simv.daidir/.vcs.timestamp
Executable 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
|
BIN
test/SIMv0.1/simv.daidir/_7567_archive_1.so
Executable file
BIN
test/SIMv0.1/simv.daidir/_7567_archive_1.so
Executable file
Binary file not shown.
BIN
test/SIMv0.1/simv.daidir/binmap.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/binmap.sdb
Executable file
Binary file not shown.
4
test/SIMv0.1/simv.daidir/build_db
Executable file
4
test/SIMv0.1/simv.daidir/build_db
Executable 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
|
9
test/SIMv0.1/simv.daidir/cc/cc_bcode.db
Executable file
9
test/SIMv0.1/simv.daidir/cc/cc_bcode.db
Executable 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
|
2
test/SIMv0.1/simv.daidir/cc/cc_dummy_file
Executable file
2
test/SIMv0.1/simv.daidir/cc/cc_dummy_file
Executable file
@ -0,0 +1,2 @@
|
||||
Dummy_file
|
||||
Missing line/file info
|
20
test/SIMv0.1/simv.daidir/cgname.json
Executable file
20
test/SIMv0.1/simv.daidir/cgname.json
Executable file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"std": [
|
||||
"std",
|
||||
"reYIK",
|
||||
"module",
|
||||
1
|
||||
],
|
||||
"Tb_Sync_FIFO": [
|
||||
"Tb_Sync_FIFO",
|
||||
"g97qF",
|
||||
"module",
|
||||
2
|
||||
],
|
||||
"...MASTER...": [
|
||||
"SIM",
|
||||
"amcQw",
|
||||
"module",
|
||||
3
|
||||
]
|
||||
}
|
0
test/SIMv0.1/simv.daidir/covg_defs
Executable file
0
test/SIMv0.1/simv.daidir/covg_defs
Executable file
4
test/SIMv0.1/simv.daidir/debug_dump/.version
Executable file
4
test/SIMv0.1/simv.daidir/debug_dump/.version
Executable 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
|
BIN
test/SIMv0.1/simv.daidir/debug_dump/AllModulesSkeletons.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/debug_dump/AllModulesSkeletons.sdb
Executable file
Binary file not shown.
BIN
test/SIMv0.1/simv.daidir/debug_dump/HsimSigOptDb.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/debug_dump/HsimSigOptDb.sdb
Executable file
Binary file not shown.
0
test/SIMv0.1/simv.daidir/debug_dump/dumpcheck.db
Executable file
0
test/SIMv0.1/simv.daidir/debug_dump/dumpcheck.db
Executable file
BIN
test/SIMv0.1/simv.daidir/debug_dump/dve_debug.db.gz
Executable file
BIN
test/SIMv0.1/simv.daidir/debug_dump/dve_debug.db.gz
Executable file
Binary file not shown.
9
test/SIMv0.1/simv.daidir/debug_dump/fsearch/.create_fsearch_db
Executable file
9
test/SIMv0.1/simv.daidir/debug_dump/fsearch/.create_fsearch_db
Executable 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"
|
57
test/SIMv0.1/simv.daidir/debug_dump/fsearch/check_fsearch_db
Executable file
57
test/SIMv0.1/simv.daidir/debug_dump/fsearch/check_fsearch_db
Executable 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
|
0
test/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.stat
Executable file
0
test/SIMv0.1/simv.daidir/debug_dump/fsearch/fsearch.stat
Executable file
BIN
test/SIMv0.1/simv.daidir/debug_dump/fsearch/idents_tapi.xml.gz
Executable file
BIN
test/SIMv0.1/simv.daidir/debug_dump/fsearch/idents_tapi.xml.gz
Executable file
Binary file not shown.
3
test/SIMv0.1/simv.daidir/debug_dump/src_files_verilog
Executable file
3
test/SIMv0.1/simv.daidir/debug_dump/src_files_verilog
Executable 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
|
1
test/SIMv0.1/simv.daidir/debug_dump/topmodules
Executable file
1
test/SIMv0.1/simv.daidir/debug_dump/topmodules
Executable file
@ -0,0 +1 @@
|
||||
|
BIN
test/SIMv0.1/simv.daidir/debug_dump/vir.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/debug_dump/vir.sdb
Executable file
Binary file not shown.
BIN
test/SIMv0.1/simv.daidir/eblklvl.db
Executable file
BIN
test/SIMv0.1/simv.daidir/eblklvl.db
Executable file
Binary file not shown.
BIN
test/SIMv0.1/simv.daidir/elabmoddb.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/elabmoddb.sdb
Executable file
Binary file not shown.
138
test/SIMv0.1/simv.daidir/external_functions
Executable file
138
test/SIMv0.1/simv.daidir/external_functions
Executable 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
|
BIN
test/SIMv0.1/simv.daidir/hslevel_callgraph.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/hslevel_callgraph.sdb
Executable file
Binary file not shown.
BIN
test/SIMv0.1/simv.daidir/hslevel_level.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/hslevel_level.sdb
Executable file
Binary file not shown.
BIN
test/SIMv0.1/simv.daidir/hslevel_rtime_level.sdb
Executable file
BIN
test/SIMv0.1/simv.daidir/hslevel_rtime_level.sdb
Executable file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user