import Wired import Libs.Simple130nm.Wired bus = rightwards . mapM bus1 where bus1 = space 1200 >=> guideE 3 0 >=> space 850 sklansky op [a] = space 2050 [a] sklansky op as = downwards' $ do bus as (ls',rs') <- rightwards $ ((sklansky op -|- sklansky op) . halveList) as rs'' <- rightwards $ sequence [op (last ls', r) | r <- rs'] bus (ls' ++ rs'') -- Using downwards' to get alignment towards the right. In the future, this -- will be done using elastic space instead. sklanskyIO op = downwards . (bus >=> space 1000 >=> sklansky op >=> space 1000 >=> bus) test1 = renderWiredWithNets "circ" $ sklanskyIO and2 =<< inputList 28 "in" test2 = simulate (stripLayout . sklansky and2) [1,1,1,1,0,1,1,0,1,1]