Skip to content

Commit

Permalink
add scheduling model in attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
UnsignedByte committed Feb 2, 2025
1 parent fe84d1a commit 31e3f37
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 17 deletions.
30 changes: 20 additions & 10 deletions crates/filament/src/ast_passes/scheduling_model.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use crate::ast_visitor::{Action, Construct, Visitor};
use fil_ast as ast;
use fil_utils::{self as utils, AttrCtx, Diagnostics, Error, GPosIdx};
use fil_utils::{self as utils, AttrCtx, GPosIdx};
use std::{collections::HashMap, fs};

type Model = HashMap<String, HashMap<String, f64>>;
Expand All @@ -9,12 +8,10 @@ type Model = HashMap<String, HashMap<String, f64>>;
pub struct SchedulingModel {
/// Scheduling model mapping
model: Model,
/// Current component
comp: Option<ast::Id>,
}

impl Construct for SchedulingModel {
fn from(opts: &crate::cmdline::Opts, ast: &mut fil_ast::Namespace) -> Self {
fn from(opts: &crate::cmdline::Opts, _: &mut fil_ast::Namespace) -> Self {
let model = opts
.scheduling_model
.as_ref()
Expand All @@ -23,12 +20,10 @@ impl Construct for SchedulingModel {
})
.unwrap_or_default();

Self { model, comp: None }
Self { model }
}

fn clear_data(&mut self) {
self.comp = None;
}
fn clear_data(&mut self) {}
}

impl Visitor for SchedulingModel {
Expand All @@ -37,7 +32,22 @@ impl Visitor for SchedulingModel {
}

fn signature(&mut self, sig: &mut fil_ast::Signature) -> Action {
self.comp = Some(*sig.name.inner());
let comp = sig.name.inner().to_string();

if let Some(attr_map) = self.model.get(&comp) {
for port in sig.ports.iter_mut() {
let name = port.name.to_string();

let value = *attr_map.get(&name).unwrap_or_else(|| panic!("Port {} not found in scheduling model for component {}",
name, comp));

port.attrs.set(
utils::PortFloat::CombDelay,
value,
GPosIdx::UNKNOWN,
);
}
}
Action::Continue
}
}
10 changes: 8 additions & 2 deletions crates/utils/src/attr/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ pub use attributes::Attributes;
pub use ctx::AttrCtx;
pub use store::AttrStore;
pub use types::{
comp_attrs::{Attrs as CompAttrs, Bool as CompBool, Num as CompNum},
port_attrs::{Attrs as PortAttrs, Bool as PortBool, Num as PortNum},
comp_attrs::{
Attrs as CompAttrs, Bool as CompBool, Float as CompFloat,
Num as CompNum,
},
port_attrs::{
Attrs as PortAttrs, Bool as PortBool, Float as PortFloat,
Num as PortNum,
},
};
6 changes: 3 additions & 3 deletions crates/utils/src/attr/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ attr_set! {

attr_set! {
port_attrs;
flag {
flag {};
numeric {};
float {
priv {
/// Combinational delay of this port
CombDelay,
};
};
numeric {};
float {};
}
4 changes: 2 additions & 2 deletions crates/utils/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ mod position;
mod reporter;

pub use attr::{
AttrCtx, AttrStore, Attributes, CompAttrs, CompBool, CompNum, PortAttrs,
PortBool, PortNum,
AttrCtx, AttrStore, Attributes, CompAttrs, CompBool, CompFloat, CompNum,
PortAttrs, PortBool, PortFloat, PortNum,
};
pub use errors::{Error, FilamentResult};
pub use gsym::GSym;
Expand Down

0 comments on commit 31e3f37

Please sign in to comment.