Skip to content
Snippets Groups Projects
Commit ffe92ce3 authored by Per Lindgren's avatar Per Lindgren
Browse files

with serde experiments

parent 1382c580
No related branches found
No related tags found
No related merge requests found
...@@ -28,6 +28,12 @@ dependencies = [ ...@@ -28,6 +28,12 @@ dependencies = [
"hashbrown", "hashbrown",
] ]
[[package]]
name = "itoa"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
[[package]] [[package]]
name = "petgraph" name = "petgraph"
version = "0.5.1" version = "0.5.1"
...@@ -38,9 +44,93 @@ dependencies = [ ...@@ -38,9 +44,93 @@ dependencies = [
"indexmap", "indexmap",
] ]
[[package]]
name = "proc-macro2"
version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"
dependencies = [
"unicode-xid",
]
[[package]]
name = "quote"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
dependencies = [
"proc-macro2",
]
[[package]] [[package]]
name = "rsim" name = "rsim"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"petgraph", "petgraph",
"serde",
"serde_arrays",
"serde_json",
] ]
[[package]]
name = "ryu"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
[[package]]
name = "serde"
version = "1.0.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_arrays"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd"
dependencies = [
"serde",
]
[[package]]
name = "serde_derive"
version = "1.0.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "syn"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]
[[package]]
name = "unicode-xid"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
...@@ -8,3 +8,8 @@ edition = "2018" ...@@ -8,3 +8,8 @@ edition = "2018"
[dependencies] [dependencies]
petgraph = "0.5.1" petgraph = "0.5.1"
serde_arrays = "0.1.0"
serde_json = "1.0.64"
[dependencies.serde]
version = "1.0.126"
features = ["derive"]
use serde::{Deserialize, Serialize};
use std::cell::Cell; use std::cell::Cell;
use std::convert::TryFrom; use std::convert::TryFrom;
use std::convert::{From, Into}; use std::convert::{From, Into};
...@@ -111,8 +112,8 @@ impl<const N: usize> BitOr for &BitArr<N> { ...@@ -111,8 +112,8 @@ impl<const N: usize> BitOr for &BitArr<N> {
} }
} }
#[test]
mod test { mod test {
use crate::bitarr::*;
#[test] #[test]
fn extensions() { fn extensions() {
let a: BitArr<2> = 0b10u8.into(); let a: BitArr<2> = 0b10u8.into();
......
...@@ -68,6 +68,26 @@ use rsim::*; ...@@ -68,6 +68,26 @@ use rsim::*;
//use std::cell::Cell; //use std::cell::Cell;
// two input mux // two input mux
use serde::{Deserialize, Serialize};
use serde_json;
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
struct MyArr<const N: usize> {
#[serde(with = "serde_arrays")]
arr: [bool; N],
}
#[test]
fn test_serde() {
println!("test serde");
let arr = MyArr { arr: [false; 8] };
let json = serde_json::to_string(&arr).unwrap();
println!("json {:?}", json);
let arr2 = serde_json::from_str(&json).unwrap();
assert_eq!(arr, arr2);
println!("arr2 {:?}", arr2);
}
#[derive(Debug, Clone, PartialEq)]
struct Mux<'a, const N: usize> { struct Mux<'a, const N: usize> {
ins: (Signal<'a, N>, Signal<'a, N>), ins: (Signal<'a, N>, Signal<'a, N>),
sel: Signal<'a, 1>, sel: Signal<'a, 1>,
...@@ -91,15 +111,10 @@ struct ZeroExt<'a, const N: usize, const M: usize> { ...@@ -91,15 +111,10 @@ struct ZeroExt<'a, const N: usize, const M: usize> {
impl<'a, const N: usize, const M: usize> Eval for ZeroExt<'a, N, M> { impl<'a, const N: usize, const M: usize> Eval for ZeroExt<'a, N, M> {
fn eval(&self) -> () { fn eval(&self) -> () {
let mut res = BitArr([false; M]); self.out.w(self.ins.r().zero_ext());
res[0..N].clone_from_slice(&*self.ins.r());
self.out.w(res);
} }
} }
#[test] #[test]
fn test_zero_ext() { fn test_zero_ext() {
let mut ins: BitArr<2> = 0b10u8.into(); let mut ins: BitArr<2> = 0b10u8.into();
......
use serde::{Deserialize, Serialize};
use std::cell::Cell; use std::cell::Cell;
use std::convert::TryFrom; use std::convert::TryFrom;
use std::convert::{From, Into}; use std::convert::{From, Into};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment