<kristianpaul> I tried gtkterm also...
<kristianpaul> The only way i got nice console output from the mm1 is when running something from flterm..
<Fallenou> yes because of the \r policy
<kristianpaul> \r ?
<Fallenou> milkymist just sends \n and no \r
<kristianpaul> hmm
<Fallenou> so you get horrible outputs from minicom or screen
<kristianpaul> So the only way is hack flterm to be a console?
<Fallenou> maybe you can try to set up your software to add extra \r to the \n
<kristianpaul> or it is already a console'
<kristianpaul> okk
<Fallenou> flterm and gtkterm work well because they add extra \r
<kristianpaul> Fallenou: can you please upload and upload a file about 1Mb to flicernoise
<kristianpaul> remenber create a user for you in the settings menu
<kristianpaul> gtkterm dint worked..
<Fallenou> The thing is I cannot use the GUI
<Fallenou> since I have the weird mouse problem
<kristianpaul> ahh the mouse thing..
<Fallenou> yes :(
<kristianpaul> well
<kristianpaul> one more bug to the list..
<kristianpaul> Now no warning..
<Fallenou> yep it seems I am the only one to get this bug
<Fallenou> am I ?
<kristianpaul> not wait i dont mean the other gui bug ;-)
<kristianpaul> was talking about send big (Mb) files from flicernoise to host..
<kristianpaul> but i need do more tests
<kristianpaul> Fallenou: can i create a filesystem using ram in rtems?
<Fallenou> a ramfs ?
<Fallenou> yes I think so
<kristianpaul> yeah something like that
<Fallenou> it is IMFS I think
<kristianpaul> good
<kristianpaul> miniIMFS
<Fallenou> doesn't seem to be very documented
<Fallenou> i would try IMFS first :)
<kristianpaul> This chapter should be written after the IMFS chapter is completed and describe the im-
<kristianpaul> plementation of the mini-IMFS.
<kristianpaul> :p
<Fallenou> there is also RAM disk in the block device section
<kristianpaul> already?
<kristianpaul> flickernoise**
<kristianpaul> Fallenou: You already tried NFS?
<Fallenou> no never
<kristianpaul> hmm so i need learn doc ;-)
<Fallenou> there is something about how to mount nfs on flickernoise IIRC on milkymist wiki
<kristianpaul> yeah?
<kristianpaul> i looked for nfs using mediawiki and got nothing..
<kristianpaul> link?
<Fallenou> I searched and found nothing
<Fallenou> I must have dreamed
<kristianpaul> hehe
<Fallenou> sorry
<kristianpaul> np
<kristianpaul> ah yes, gtkterm works nice with mm1
<Fallenou> btw mount ip_address:/path /mountpoint should work
<Fallenou> in rtems shell
<Fallenou> try mount -L after
<Fallenou> in the irc log sebastien had it working with this command
<kristianpaul> I think i have troubles mouting last time... but anyway if fail i'll writ to rtems list for help :-)
<kristianpaul> ah logs :-)
<Fallenou> I think nfs is working
<Fallenou> try some wireshark while doing the mount
<kristianpaul> oh yes, even for a ping i do :-)
<Fallenou> gn8
<kristianpaul> late or sooner first question about llvm port :-)
<kristianpaul> weird, i got same Error: SC = 27 with or without memory card inserted..
<adamw_> i've still not decided to use which one. but I'd prefer to pick up SOT23-3 package, it's quite hard now to pick a suitable open-drain with SOT23-3 with specified delay time said over 140ms.
<adamw_> I am still finding..if you have new idea, u can just tell me. ;-)
<lekernel> mwalle: where did you see those div/mod opcodes?
<Fallenou> lekernel: to mount a nfs FS from flickernoise shell, is the command mount -t nfs 192.168.0.X:/path /nfs ?
<Fallenou> with a previous mkdir /nfs
<Fallenou> ?
<lekernel> yes
<Fallenou> ok
<Fallenou> i have a pool error in qemu :x
<Fallenou> and system hangs
<Fallenou> an assert fails
<Fallenou> il rtems code
<Fallenou> in*
<Fallenou> when trying to mount a nfs
<Fallenou> have you ever had this error ?
<lekernel> Fallenou: no
<lekernel> adamw_: use whatever package, I don't mind if it's not SOT23... or would a bigger package cause PCB layout problems?
<lekernel> fyi I have already used the MAX6303, but it's 8-SOIC
<adamw_> lekernel, the part shows up Non-stocked or  Factory Stock Available on Mouser, I won't pick up.
<adamw_> ha...good.
<lekernel> well, I also don't know if the MAX6303 characteristics are good for us
<lekernel> need to check
<adamw_> our inventory have this part about 3k!
<lekernel> iirc I had ordered it from Mouser, but that was some 4 years ago
<adamw_> the delay time is 200ms, N-Channel Open drain
<lekernel> oh, ok
<lekernel> perfect then?
<adamw_> but the threshold voltage is 2.63V
<adamw_> it should be work well.
<lekernel> yeah, I think so
<adamw_> just soldered
<adamw_> not tested then
<adamw_> did u use an diode to block/protect?
<lekernel> the NOR flash is specified at 2.7V mini
<lekernel> it should be fine
<lekernel> a diode, where?
<lekernel> that was my max6303 circuit... but with an altera fpga
<adamw_> i check MAX6303, it's not a open drain. so u must need a diode.
<lekernel> ha
<lekernel> yes
<lekernel> but test the A4809 first :)
<adamw_> sure.
<adamw_> cathode of diode is connected to RP#, and the anode of diode is connected to PROGRAM_B on my site
<adamw_> please don't DO this on your MAX6303.
<adamw_> I'll report if the result is good.
<adamw_> wow, the circuit is designed in 2007?!
<lekernel> yeah
<lekernel> your diode connection looks good
<lekernel> mh, no actually
<lekernel> you should do it the other way
<lekernel> otherwise the FPGA will de-configure itself when pulling RP# low to reset the flash
<adamw_> any news about reset ic analysis I always updated here: http://en.qi-hardware.com/wiki/Milkymist_One_Power_On_Off_Sequence
<lekernel> so you should connect the reset IC to PROGRAM_B and put the diode the other way around
<adamw_> wrong direction of diode?
<lekernel> also, this is directly max6303 compatible (no need for open drain), since nothing else drives PROGRAM_B
<lekernel> yeah, and wrong position of the reset IC if you put it on RP#
<adamw_> right, nothing drives PROGRAM_B.
<adamw_> no no..I located reset ic on PROGRAM_B.
<adamw_> then reset ic's output goes to PROGRAM_B.
<lekernel> ok. then you should connect the cathode of the diode to PROGRAM_B and anode on RP#
<lekernel> so the diode is conductive when V(PROGRAM_B) < V(RP#)
<lekernel> i.e. pull RP# low when PROGRAM_B is low
<adamw_> anode is positive terminal, cathode is negative terminal.
<adamw_> your connection will let fpga to reconfigure again when whatever RP# pulls low then high(assert RESET condition)
<adamw_> is that right?
<adamw_> but my idea is to let RP# pin got low when power up and delay 200ms at low level then high, also when RP# get low from fpga asserting reset.
<adamw_> so your connection I confused. ;-) I was thought my connection is right since I've not soldered that diode.
<adamw_> Shall we need to reconfigure fpga (from PROGRAM_B) whenever asserting NOR flash reset? I was thought they are different operation. :-)
<lekernel> adamw_: no, we shall NOT reconfigure fpga (from PROGRAM_B) whenever asserting NOR flash reset
<lekernel> so the diode's cathode must connect to PROGRAM_B
<lekernel> it's an active low signal!
<lekernel> during normal operation, PROGRAM_B is at 3.3V
<lekernel> and RP# can be at either 0V or 3.3V
<lekernel> when it's at 0V we have
<lekernel> the diode's cathode (PROGRAM_B) at 3.3V and the diode's anode (RP#) at 0V
<lekernel> therefore, the diode is blocked, current does not flow through it, and nothing happens
<lekernel> which is what we want :)
<lekernel> on the other hand, during reset, we have PROGRAM_B pulled low at 0V by the reset IC, and RP# floating at 3.3V
<lekernel> then, the diode has its cathode (PROGRAM_B) at 0V and its anode (RP#) at 3.3V
<lekernel> therefore it becomes conductive and pulls RP# low, which is, again, what we want
<lekernel> is that clear now?
<adamw_> hmm...you are totally right! I was wrong. hehe..:-)
<adamw_> so during activation of reset ic, RP# floating until finishing configuration. right?
<adamw_> right right
<lekernel> during the activation of the reset IC, RP# isn't floating, it's pulled low by the diode
<adamw_> yes, it connected inside fpga is floating, right?
<adamw_> i think so.
<lekernel> ah, you mean inside the FPGA? yes
<adamw_> yeah..inside fpga, i think so.
<lekernel> before configuration the FPGA doesn't drive RP#, only with a weak pull-up
<lekernel> after configuration it totally depends on the bitstream
<lekernel> i'll make that pin open drain
<adamw_> i tried to find if there's some description on those behaviour like (weak pull-up) inside fpga in document, do you know which doc Xilinx describes?
<lekernel> maybe spartan 6 user guide... look for information about "hot swapping"
<adamw_> yeah...remember to let it be as open drain pin after configuration. tks.
<adamw_> hm..ok
<lekernel> iirc this behaviour is controlled by the HSWAP_EN pin and it's enabled on the MM1
<lekernel> but in all cases, the FPGA shouldn't drive pins before configuration
<lekernel> you actually see the weak pull up on the LEDs btw
<lekernel> they are dimly lit when the FPGA isn't configured
<adamw_> yeah...yes
<adamw_> i just also want to know this time slot understood http://en.qi-hardware.com/wiki/File:Configuration_sequence.png
<adamw_> this sequence if I can know the behaviour behind those sequences then study the electrical behaviour should be good to understand whole process of configuration.
<Fallenou> you may find some interesting stuff page 66 of Spartan 6 FPGA Configuration user guide
<Fallenou> ug380.pdf
<Fallenou> about some pin states
<adamw_> Fallenou, hi yes, just seeing it about HSWAPEN. :-)
<Fallenou> hi :)
<adamw_> Fallenou, hmm...page 67 shows Floating signal levels are problematic in CMOS logic systems.
<adamw_> well...i need to read more carefully on this mention.
<lekernel> adamw_: yes, that's why there are those pull up resistors
<lekernel> so the signals aren't floating
<lekernel> wolfspraul: we can go to the photography studio, but it's in Köln
<lekernel> I was there last month... bad timing :(
<wolfspraul> saw it, on my list. I will try a new studio we found in Shanghai too.
<lekernel> saw it? well, I didn't know the location
<lekernel> but he just answered this morning
<lekernel> if I can get a chance i'd like to meet him as well, he shoots interesting places as well (particle accelerators, neutrino detectors and the like)
<lekernel> if this can wait a bit I'll go there in early May
<lekernel> though the LM8 licensing is unclear (last time I checked)
<lekernel> http://www.latticesemi.com/products/intellectualproperty/referencedesigns/8bitmicrocontrollermico8.cfm says "The LatticeMico8 is licensed under a new open intellectual property (IP) core license, the first such license offered by any FPGA supplier. The main benefits of using open source IP are greater flexibility, improved portability, and no cost. This new agreement provides all the benefits of standard open source and allows users to
<lekernel> mix proprietary designs with the open source core."
<lekernel> then when you try to download it, you get this: http://www.latticesemi.com/dynamic/view_document.cfm?document_id=38780
<lekernel> I contacted Lattice a while ago about this, and they said "we will resolve this"... but they didn't
<Fallenou> =(
<lekernel> well, anyway, LM8 wouldn't make a nice LLHDL demo, the code is full of generate statements and old verilog-95 syntax that would be a pain in the ass to implement
<larsc> lekernel: do you see any problems with using LLHDL as a basis for a simulator?
<kristianpaul> lekernel: i tought you already tested llhdl with navre?..
<lekernel> there are already good simulators, why yet another one?
<kristianpaul> agree
<larsc> to learn how to write one
<lekernel> well, indeed a LLHDL simulator wouldn't be very hard to write
<lekernel> but I was rather thinking of generating back Verilog models of LLHDL code so I could simply use off the shelf tools for this purpose
<kristianpaul> larsc: very good point ;-)
<lekernel> which also enables me to use formal verification tools that take Verilog as input, in case of difficult to track LLHDL bugs
<kristianpaul> i guess is too soon to ask, but what are/will the main diferences between verilog and llhdl?
<lekernel> as the name says, LLHDL is lower level
<lekernel> so you don't have to deal with the complex structures and idiosyncrasies of Verilog/VHDL to manipulate it
<lekernel> larsc: also, going the "verilog model" way enables mixed simulations to be made
<lekernel> ie simulate the LLHDL model of a part of the code along with the original Verilog of the rest
<lekernel> this would also help in tracking down LLHDL toolchain bugs
<lekernel> larsc: what do you think?
<lekernel> ah, and LLHDL is _only_ for synchronous designs
<lekernel> for asynchronous stuff, you have to manually instantiate the clock domain transfer elements at the boundaries
<lekernel> a LLHDL simulator wouldn't handle that, but a Verilog one will...
<larsc> hm
<lekernel> at least, the event driven ones. there are also cycle-driven Verilog simulators, which have the same synchronicity requirement as LLHDL
<larsc> what i would like to see is a simulator where you can write modules in non hdl languages, which allow you to model external behavior
<lekernel> Verilator is probably what you're looking for :)
<lekernel> compiles synchronous Verilog a library C++ classes, which you are free to link to anything you want
<lekernel> it works great
<larsc> not exactly what i want, but close
<lekernel> a lot of great work has gone into verilator, so I'd rather recommend you find a way to link your other modules to C++ instead of starting from scratch...
<lekernel> verilator-compiled modules are really fast. beats most verilog simulators, including the ones with big licenses
<mwalle> lekernel: lm32 reference manual, opcode overview table
<mwalle> 100111 and 110101
<lekernel> maybe contact Lattice about that... they fixed the problems last time
<mwalle> (lm8 toolchain) yet another unmaintained toolchain? :=)
<mwalle> lekernel: is the lm8 still restricted to lattice devices?
<lekernel> yeah
<lekernel> anyone happens to know how to complement a positive number with gmplib?
<lekernel> mpz_com() inverts the (implied) sign bit as well, i.e. mpz_com(1) = -2
<lekernel> but I want 0
<lekernel> @#[~{#[!
<lekernel> why did they make that such a difficult problem
<lekernel> well, probably because it's not meant for arbitrary bit vectors but arbitrary integers :p
<lekernel> works by xoring the right number of 1's :)
<lekernel> btw got the carry chain arithmetic to work... https://github.com/lekernel/llhdl/blob/master/llhdl-spartan6-map/carryarith.c
<rjeffries> sees some of the usual suspects
<rjeffries> was MM pcb designed using KiCad oe oether s/w>
<lekernel> haha, always the good questions :) no, it was designed with proprietary software
<rjeffries> I am not here to cause problems it was curiosity question only
<rjeffries> wpwrak is using kiCad now on his small Ben add-ons
<lekernel> yup. but the MM1 PCB is a lot more complex, and we wanted to avoid kicad woes on this one
<rjeffries> not sure what else has been made from KiCad
<lekernel> in hindsight, this might not have been such a good idea
<rjeffries> understood.
<lekernel> altium made its lot of problems too
<rjeffries> how many layers is your pc? I would guess 6 at least?
<lekernel> yeah 6
<rjeffries> is ben a 4 layer PCB I would guess
<lekernel> I don't know
<rjeffries> ok
<rjeffries> wronh channel ;)
<lekernel> if there's a successor to the MM1, we'll probably consider kicad for it
<rjeffries> cool
<rjeffries> I can understand why some people are enthusiastic about MM potential.
<wpwrak> rjeffries: my boards are all 1-2 layer. haven't designed anything i couldn't prototype in-house yet :)
<lekernel> cool, the llhdl toolchain correctly handles this: https://github.com/lekernel/llhdl/blob/master/designs/blinker/blinker.v
<rjeffries> nods to w[wrak
<lekernel> and the design works on the real hardware
<rjeffries> does MM1 have a microSD slot availble from exterior?
<lekernel> no, it's only internal memory card
<lekernel> you can think of it as a "hard disk"
<lekernel> memory card hotplugging is too much software and mechanical trouble for what it brings
<rjeffries> if ther e is something beyond MM1 (and I realize that is a big "if") would you consider adding a second 8:10 port to outside as an i/o? still have one internal as memory
<lekernel> no idea :)
<rjeffries> well as you know wpwrak's stuff are not memory cards. ;)
<rjeffries> would be nice SWEET to leverage all his work
<Fallenou> what do you think of this ?
<wpwrak> wonders if a verilog parser could simply accept { and } as begin/end, and thus avoid the faux pascalism
<lekernel> wpwrak: yeah I think so
<lekernel> but then those verilog files couldn't be used with simulators, other tools, etc.
<lekernel> so it's not that much of a good idea
<lekernel> but if you want, you could add a --werner option to llhdl-verilog ;)
<lekernel> Fallenou: interesting, thanks for the link
<rjeffries> Fallenou your design shows some fresh thinking. how complex a project can it handle currently?
<Fallenou> I never used it
<Fallenou> but a colleague just linked it to me
<Fallenou> where I am doing my internship they used that to design their PCBs
<rjeffries> my mistake I thought it was your project
<Fallenou> no not at all :)
<Fallenou> just a link
<Fallenou> I think they did like 4 layers pcb with it
<wpwrak> lekernel: the parser could also have a mode to just spit out "regular" verilog. may be worth a try. i think it could look a lot tidier.
<Fallenou> pretty well done pcb btw, but a bit big, but it's a prototype
<lekernel> wpwrak: there are tons of problems with verilog, this one is by far not the most important
<wpwrak> lekernel: heh, you have to start somewhere ;-)
<lekernel> for example I'd rather see that one "fixed"
<lekernel> unlike begin/end syntax, this one can make you waste days or debugging or even manufacture broken ASICs if you're not very careful
<wpwrak> btw, do the numbers in increments/decrements always have to be sized ?
<lekernel> in general it's good coding practice yes
<lekernel> as I said, integer constants default to 32 bits
<wpwrak> so the synthesizer is not (generally) expected to simplify this. pity. looks like a lot of redundancy. e.g., if you resize the register, then you also have to track down all of the operations on it. or would you get an error/warning if using a smaller/larger value ?
<lekernel> actually, modern synthesizers do simplify this
<wpwrak> (000388.html) hmm, subtle. there's a "not" missing in the explanation, no ? e.g., ''the scheduling of the "assign o=r_o" [...] may [not?] occur before you read o again''
<wpwrak> (toporouter) mmh. an autorouter. isn't the common wisdom that they usually don't work ? :)
<Fallenou> wo nice lekernel :)
<Fallenou> I always found autorouters sucked
<wpwrak> the context-sensitive menus in liquidpcb look interesting. that's a big nuisance in kicad. e.g., if you delete a track, and you click at/near a node, then you have to choose which of the segments you want to select. then, of course, "delete track" deletes all the segments of that track ...
<wpwrak> (well, maybe it's better in the latest version. i'm a bit behind.)
<Fallenou> yes that's a pain in the ass
<Fallenou> but i havn't touch kicad for more than one year
<mwalle> gn8
<lekernel> 'n8
<Fallenou> gn8