56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
/**
|
|
* @description 有序性测试
|
|
* @author 锦恢
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const { makeVcdStream } = require('../bin/vcd');
|
|
const createVcd = require('../out/vcd.js');
|
|
|
|
/**
|
|
*
|
|
* @param {number[][]} waves
|
|
* @returns {boolean}
|
|
*/
|
|
function isordered(waves) {
|
|
let lastTime = undefined;
|
|
let i = 0;
|
|
for (const wave of waves) {
|
|
const time = wave[0];
|
|
if (lastTime !== undefined && lastTime > time) {
|
|
console.error('detect error time, current time: ' + time, ', last time: ' + lastTime);
|
|
console.log(waves[i - 2]);
|
|
console.log(waves[i - 1]);
|
|
console.log(waves[i]);
|
|
console.log(waves[i + 1]);
|
|
console.log(waves[i + 2]);
|
|
console.log(waves[i + 3]);
|
|
|
|
return false;
|
|
}
|
|
lastTime = time;
|
|
i ++;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
async function main() {
|
|
// 初始化 wasm
|
|
const wasmBinary = fs.readFileSync('./out/vcd.wasm');
|
|
const vcdstream = await makeVcdStream({ wasmBinary });
|
|
|
|
// 读入 vcd 转换成 arraybuffer 输入 其中进行计算
|
|
const arraybuffer = fs.readFileSync('test/SIMv0.2/Tb_Sync_FIFO.vcd');
|
|
vcdstream.consume(arraybuffer);
|
|
const info = vcdstream.getBasicInfo();
|
|
const values = info.signalValues;
|
|
console.log('time', info.time);
|
|
console.log('timescale', info.vcdInfo.timescale);
|
|
|
|
|
|
// clk link is #
|
|
// 每隔 12500 翻转一次
|
|
console.log(isordered(values['#'].wave));
|
|
}
|
|
|
|
main(); |