Update SyntaxTable

This commit is contained in:
Guojie Luo 2022-04-24 11:26:52 +08:00
parent 01e15ce040
commit c03f62e8fa
3 changed files with 7 additions and 3 deletions

View File

@ -2,7 +2,7 @@ use json::JsonValue;
use linked_hash_map::LinkedHashMap;
use linked_hash_set::LinkedHashSet;
use llhd::{
ir::{Arg, Block, Module, Signature, UnitBuilder, UnitData, UnitKind, UnitName, Value},
ir::{Arg, Block, Inst, Module, Signature, UnitBuilder, UnitData, UnitKind, UnitName, Value},
ty::Type,
value::IntValue,
};
@ -32,6 +32,7 @@ pub struct UnitContext {
pub struct SyntaxTable<'a> {
pub root: &'a JsonValue,
pub values: HashMap<Value, &'a JsonValue>,
pub insts: HashMap<Inst, &'a JsonValue>,
}
pub struct SymbolInfo {
@ -138,6 +139,7 @@ impl<'a> SyntaxTable<'a> {
Self {
root: json,
values: HashMap::new(),
insts: HashMap::new(),
}
}
}

View File

@ -17,7 +17,7 @@ mod tools;
use always_statement::AlwaysStatement;
use case_statement::CaseStatement;
use conditional_statement::ConditionalStatement;
use context::{ModuleContext, SymbolInfo, SymbolKind, SyntaxTable, UnitContext};
use context::{ModuleContext, SymbolInfo, SymbolKind, UnitContext};
use expression::Expression;
use module_declaration::ModuleDeclaration;
use net_variable_assignment::NetVariableAssignment;
@ -27,6 +27,7 @@ use seq_block::SeqBlock;
use statement::Statement;
use symbol_declaration::SymbolDeclaration;
pub use context::SyntaxTable;
pub use description_list::DescriptionList;
pub use tags::Tag;
pub use tools::{CodeReporter, Tools};

View File

@ -63,11 +63,12 @@ impl NonblockingAssignmentStatement {
builder.append_to(bb_head);
let delta_time = builder.ins().const_time(TimeValue::new(num::zero(), 1, 0));
builder.ins().drv(
let inst = builder.ins().drv(
unit_ctx.raw_name_to_value[lvalue_name],
opt_expr.unwrap(),
delta_time,
);
context.syntax_table.insts.insert(inst, json);
Some(bb_head)
} else {