Skip to content

Commit

Permalink
Use 3vl memories.
Browse files Browse the repository at this point in the history
  • Loading branch information
tilk committed Nov 2, 2018
1 parent 2370822 commit 0d6313c
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 13 deletions.
15 changes: 11 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "digitaljs",
"version": "0.2.0",
"version": "0.2.1",
"description": "Digital logic simulator",
"main": "dist/main.js",
"scripts": {
Expand Down Expand Up @@ -31,7 +31,7 @@
"webpack-cli": "^3.1.0"
},
"dependencies": {
"3vl": "^0.1.0",
"3vl": "^0.2.0",
"babel-polyfill": "^6.26.0",
"big-integer": "^1.6.34",
"css-element-queries": "^1.0.5",
Expand Down
14 changes: 7 additions & 7 deletions src/cells/memory.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import joint from 'jointjs';
import bigInt from 'big-integer';
import * as help from '@app/help.js';
import { Vector3vl } from '3vl';
import { Vector3vl, Mem3vl } from '3vl';

// Memory cell
joint.shapes.digital.Box.define('digital.Memory', {
Expand All @@ -25,11 +25,11 @@ joint.shapes.digital.Box.define('digital.Memory', {
if (!args.words) args.words = 1 << args.abits;
if (!args.offset) args.offset = 0;
if (args.memdata)
this.memdata = args.memdata.map(x => Vector3vl.fromBin(x, args.bits));
this.memdata = Mem3vl.fromJSON(args.bits, args.memdata);
else
this.memdata = Array(args.words).fill(Vector3vl.xes(args.bits));
this.memdata = new Mem3vl(args.bits, args.words);
delete args.memdata; // performance hack
console.assert(this.memdata.length == args.words);
console.assert(this.memdata.words == args.words);
this.last_clk = {};
const markup = [];
const lblmarkup = [];
Expand Down Expand Up @@ -104,7 +104,7 @@ joint.shapes.digital.Box.define('digital.Memory', {
else {
const addr = calc_addr(data[portname + 'addr']);
if (valid_addr(addr))
out[portname + 'data'] = this.memdata[addr];
out[portname + 'data'] = this.memdata.get(addr);
else
out[portname + 'data'] = Vector3vl.xes(this.get('bits'));
}
Expand All @@ -114,7 +114,7 @@ joint.shapes.digital.Box.define('digital.Memory', {
if (!data[portname + 'addr'].isFullyDefined) return;
const addr = calc_addr(data[portname + 'addr']);
if (valid_addr(addr))
this.memdata[addr] = data[portname + 'data'];
this.memdata.set(addr, data[portname + 'data']);
};
for (const [num, port] of this.get('rdports').entries())
if (!port.transparent) do_read('rd' + num, port);
Expand All @@ -127,7 +127,7 @@ joint.shapes.digital.Box.define('digital.Memory', {
getGateParams: function() {
// hack to get memdata back
const params = joint.shapes.digital.Box.prototype.getGateParams.apply(this, arguments);
params.memdata = this.memdata.map(x => x.toBin());
params.memdata = this.memdata.toJSON();
return params;
},
gateParams: joint.shapes.digital.Box.prototype.gateParams.concat(['bits', 'abits', 'rdports', 'wrports', 'words', 'offset'])
Expand Down

0 comments on commit 0d6313c

Please # to comment.