Re: nc!
i find the reason in nc help as following:
If the WORK variable (see WORK) and the LIB_MAP variable are both defined, the definition of the WORK variable overrides the definition of the LIB_MAP variable. This is important to remember if you are doing a mixed-language simulation, where you might define the LIB_MAP variable to control where the Verilog design units are compiled and then define the WORK variable to define the work library for SystemC. In this case, all design units would be compiled into the library specified with the WORK variable. To avoid this, you can either remove the definition of the WORK variable and then use the -work command-line option when compiling SystemC, or you can remove the definition of the LIB_MAP variable and then use the -work option when compiling Verilog.